feat: 扩展领域模型与配置
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
using TakeoutSaaS.Domain.CustomerService.Enums;
|
||||
using TakeoutSaaS.Shared.Abstractions.Entities;
|
||||
|
||||
namespace TakeoutSaaS.Domain.CustomerService.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 会话消息。
|
||||
/// </summary>
|
||||
public sealed class ChatMessage : MultiTenantEntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 会话标识。
|
||||
/// </summary>
|
||||
public Guid ChatSessionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 发送方类型。
|
||||
/// </summary>
|
||||
public MessageSenderType SenderType { get; set; } = MessageSenderType.Customer;
|
||||
|
||||
/// <summary>
|
||||
/// 发送方用户 ID。
|
||||
/// </summary>
|
||||
public Guid? SenderUserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 消息内容。
|
||||
/// </summary>
|
||||
public string Content { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 消息类型(文字/图片/语音等)。
|
||||
/// </summary>
|
||||
public string ContentType { get; set; } = "text/plain";
|
||||
|
||||
/// <summary>
|
||||
/// 是否已读。
|
||||
/// </summary>
|
||||
public bool IsRead { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 读取时间。
|
||||
/// </summary>
|
||||
public DateTime? ReadAt { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
using TakeoutSaaS.Domain.CustomerService.Enums;
|
||||
using TakeoutSaaS.Shared.Abstractions.Entities;
|
||||
|
||||
namespace TakeoutSaaS.Domain.CustomerService.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 客服会话。
|
||||
/// </summary>
|
||||
public sealed class ChatSession : MultiTenantEntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 会话编号。
|
||||
/// </summary>
|
||||
public string SessionCode { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 顾客用户 ID。
|
||||
/// </summary>
|
||||
public Guid CustomerUserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前客服员工 ID。
|
||||
/// </summary>
|
||||
public Guid? AgentUserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所属门店(可空为平台)。
|
||||
/// </summary>
|
||||
public Guid? StoreId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 会话状态。
|
||||
/// </summary>
|
||||
public ChatSessionStatus Status { get; set; } = ChatSessionStatus.Waiting;
|
||||
|
||||
/// <summary>
|
||||
/// 是否机器人接待中。
|
||||
/// </summary>
|
||||
public bool IsBotActive { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 开始时间。
|
||||
/// </summary>
|
||||
public DateTime StartedAt { get; set; } = DateTime.UtcNow;
|
||||
|
||||
/// <summary>
|
||||
/// 结束时间。
|
||||
/// </summary>
|
||||
public DateTime? EndedAt { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
using TakeoutSaaS.Domain.CustomerService.Enums;
|
||||
using TakeoutSaaS.Shared.Abstractions.Entities;
|
||||
|
||||
namespace TakeoutSaaS.Domain.CustomerService.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 客服工单。
|
||||
/// </summary>
|
||||
public sealed class SupportTicket : MultiTenantEntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 工单编号。
|
||||
/// </summary>
|
||||
public string TicketNo { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 客户用户 ID。
|
||||
/// </summary>
|
||||
public Guid CustomerUserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 关联订单(如有)。
|
||||
/// </summary>
|
||||
public Guid? OrderId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 工单主题。
|
||||
/// </summary>
|
||||
public string Subject { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 工单详情。
|
||||
/// </summary>
|
||||
public string Description { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 优先级。
|
||||
/// </summary>
|
||||
public TicketPriority Priority { get; set; } = TicketPriority.Normal;
|
||||
|
||||
/// <summary>
|
||||
/// 状态。
|
||||
/// </summary>
|
||||
public TicketStatus Status { get; set; } = TicketStatus.Open;
|
||||
|
||||
/// <summary>
|
||||
/// 指派的客服。
|
||||
/// </summary>
|
||||
public Guid? AssignedAgentId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 关闭时间。
|
||||
/// </summary>
|
||||
public DateTime? ClosedAt { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
using TakeoutSaaS.Shared.Abstractions.Entities;
|
||||
|
||||
namespace TakeoutSaaS.Domain.CustomerService.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 工单评论/流转记录。
|
||||
/// </summary>
|
||||
public sealed class TicketComment : MultiTenantEntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 工单标识。
|
||||
/// </summary>
|
||||
public Guid SupportTicketId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 评论人 ID。
|
||||
/// </summary>
|
||||
public Guid? AuthorUserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 评论内容。
|
||||
/// </summary>
|
||||
public string Content { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 是否内部备注。
|
||||
/// </summary>
|
||||
public bool IsInternal { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 附件 JSON。
|
||||
/// </summary>
|
||||
public string? AttachmentsJson { get; set; }
|
||||
}
|
||||
Reference in New Issue
Block a user