fix: align backend APIs and upload flow
This commit is contained in:
@@ -40,6 +40,11 @@ namespace MessageService.Domain.Entities
|
||||
/// 最后一条最新消息
|
||||
/// </summary>
|
||||
public string LastMessage { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最后一条消息产生的时间。已读状态等会话元数据更新不得改变该值。
|
||||
/// </summary>
|
||||
public DateTimeOffset? LastMessageTime { get; private set; }
|
||||
private Conversation() { }
|
||||
|
||||
public Conversation(Guid userId, Guid targetId, string targetAvatar, string targetName, long? lastReadSequenceId, int unreadCount, ChatType chatType, string lastMessage)
|
||||
@@ -52,29 +57,29 @@ namespace MessageService.Domain.Entities
|
||||
UnreadCount = unreadCount;
|
||||
ChatType = chatType;
|
||||
LastMessage = lastMessage;
|
||||
LastMessageTime = DateTimeOffset.Now;
|
||||
ModificationTime = DateTime.Now;
|
||||
StreamKey = ChatType == ChatType.GROUP ? StreamKeyBuilder.Group(targetId) : StreamKeyBuilder.Private(userId, targetId);
|
||||
AddDomainEvent(new ConversationCreatedDomainEvent(this));
|
||||
}
|
||||
|
||||
public void Update(long? LastReadSequenceId = default, int? unreadCount = default, string? lastMsg = default)
|
||||
public void SetLastReadSequence(long sequenceId)
|
||||
{
|
||||
if (LastReadSequenceId != null)
|
||||
{
|
||||
LastReadSequenceId = LastReadSequenceId.Value;
|
||||
this.NotifyModified();
|
||||
}
|
||||
if (unreadCount != null)
|
||||
{
|
||||
UnreadCount += unreadCount.Value;
|
||||
NotifyModified();
|
||||
}
|
||||
LastReadSequenceId = sequenceId;
|
||||
NotifyModified();
|
||||
}
|
||||
|
||||
if (lastMsg != null)
|
||||
{
|
||||
LastMessage = lastMsg;
|
||||
NotifyModified();
|
||||
}
|
||||
public void IncrementUnread()
|
||||
{
|
||||
UnreadCount += 1;
|
||||
NotifyModified();
|
||||
}
|
||||
|
||||
public void UpdateLastMessage(string lastMessage, DateTimeOffset messageTime)
|
||||
{
|
||||
LastMessage = lastMessage;
|
||||
LastMessageTime = messageTime;
|
||||
NotifyModified();
|
||||
}
|
||||
|
||||
|
||||
@@ -86,6 +91,7 @@ namespace MessageService.Domain.Entities
|
||||
UnreadCount = 0;
|
||||
if (lastReadSequenceId.HasValue)
|
||||
LastReadSequenceId = lastReadSequenceId.Value;
|
||||
NotifyModified();
|
||||
}
|
||||
|
||||
public void UpdateProfile(string name, string avatar)
|
||||
|
||||
@@ -91,10 +91,10 @@ namespace MessageService.Domain.Entities
|
||||
/// <param name="thumb">预览图</param>
|
||||
/// <param name="sequenceId"></param>
|
||||
/// <returns></returns>
|
||||
public static Message BuildImg(MessageCreateContext ctx, string url,
|
||||
int width, int height, string thumb, long sequenceId)
|
||||
public static Message BuildImg(MessageCreateContext ctx, string? url,
|
||||
int width, int height, string thumb, long sequenceId, Guid? fileId = null)
|
||||
{
|
||||
var content = new MessageContent("[图片]", new ImageBody(url, width, height, thumb));
|
||||
var content = new MessageContent("[图片]", new ImageBody(url, width, height, thumb, fileId));
|
||||
return new Message(ctx, sequenceId, MessageType.Image, content);
|
||||
}
|
||||
/// <summary>
|
||||
@@ -107,10 +107,10 @@ namespace MessageService.Domain.Entities
|
||||
/// <param name="thumb"></param>
|
||||
/// <param name="sequenceId"></param>
|
||||
/// <returns></returns>
|
||||
public static Message BuildVideo(MessageCreateContext ctx, string url,
|
||||
int width, int height, string thumb, long sequenceId)
|
||||
public static Message BuildVideo(MessageCreateContext ctx, string? url,
|
||||
int width, int height, string thumb, long sequenceId, Guid? fileId = null)
|
||||
{
|
||||
var content = new MessageContent("[视频]", new VideoBody(url, width, height, thumb));
|
||||
var content = new MessageContent("[视频]", new VideoBody(url, width, height, thumb, fileId));
|
||||
return new Message(ctx, sequenceId, MessageType.Video, content);
|
||||
}
|
||||
/// <summary>
|
||||
@@ -121,10 +121,10 @@ namespace MessageService.Domain.Entities
|
||||
/// <param name="duration">持续时间</param>
|
||||
/// <param name="sequenceId"></param>
|
||||
/// <returns></returns>
|
||||
public static Message BuildVoice(MessageCreateContext ctx, string url,
|
||||
int duration, long sequenceId)
|
||||
public static Message BuildVoice(MessageCreateContext ctx, string? url,
|
||||
int duration, long sequenceId, Guid? fileId = null)
|
||||
{
|
||||
var content = new MessageContent("[音频]", new VoiceBody(url, duration));
|
||||
var content = new MessageContent("[音频]", new VoiceBody(url, duration, fileId));
|
||||
return new Message(ctx, sequenceId, MessageType.Voice, content);
|
||||
}
|
||||
/// <summary>
|
||||
@@ -137,11 +137,11 @@ namespace MessageService.Domain.Entities
|
||||
/// <param name="format">文件格式</param>
|
||||
/// <param name="sequenceId"></param>
|
||||
/// <returns></returns>
|
||||
public static Message BuildFile(MessageCreateContext ctx, string url,
|
||||
public static Message BuildFile(MessageCreateContext ctx, Guid fileId, string? url,
|
||||
string name, long size,
|
||||
string format, long sequenceId)
|
||||
{
|
||||
var content = new MessageContent("[文件]", new FileBody(url, name, size, format));
|
||||
var content = new MessageContent("[文件]", new FileBody(fileId, url, name, size, format));
|
||||
return new Message(ctx, sequenceId, MessageType.File, content);
|
||||
}
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user