fix: align backend APIs and upload flow

This commit is contained in:
2026-09-15 14:10:55 +08:00
parent 32177a7293
commit 53e6195938
149 changed files with 4791 additions and 435 deletions
+22 -16
View File
@@ -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)
+11 -11
View File
@@ -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>