RobotCreatedDomainEvent.cs 2.47 KB
namespace Rcs.Domain.Entities.DomainEvents
{
    /// <summary>
    /// 机器人创建领域事件
    /// </summary>
    public sealed record RobotCreatedDomainEvent : IDomainEvent
    {
        /// <summary>
        /// 机器人系统ID
        /// </summary>
        public Guid RobotId { get; init; }

        /// <summary>
        /// 机器人编码
        /// </summary>
        public string RobotCode { get; init; }

        /// <summary>
        /// 机器人名称
        /// </summary>
        public string RobotName { get; init; }

        /// <summary>
        /// 机器人版本
        /// </summary>
        public string RobotVersion { get; init; }

        /// <summary>
        /// 协议名称
        /// </summary>
        public string ProtocolName { get; init; }

        /// <summary>
        /// 协议版本
        /// </summary>
        public string ProtocolVersion { get; init; }

        /// <summary>
        /// 制造商
        /// </summary>
        public string RobotManufacturer { get; init; }

        /// <summary>
        /// 序列号
        /// </summary>
        public string RobotSerialNumber { get; init; }

        /// <summary>
        /// 机器人类型
        /// </summary>
        public RobotType RobotType { get; init; }

        /// <summary>
        /// IP地址
        /// </summary>
        public string? IpAddress { get; init; }

        /// <summary>
        /// 是否启用
        /// </summary>
        public bool Active { get; init; }

        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime CreatedAt { get; init; }

        public RobotCreatedDomainEvent(
            Guid robotId,
            string robotCode,
            string robotName,
            string robotVersion,
            string protocolName,
            string protocolVersion,
            string robotManufacturer,
            string robotSerialNumber,
            RobotType robotType,
            string? ipAddress,
            bool active)
        {
            RobotId = robotId;
            RobotCode = robotCode;
            RobotName = robotName;
            RobotVersion = robotVersion;
            ProtocolName = protocolName;
            ProtocolVersion = protocolVersion;
            RobotManufacturer = robotManufacturer;
            RobotSerialNumber = robotSerialNumber;
            RobotType = robotType;
            IpAddress = ipAddress;
            Active = active;
            CreatedAt = DateTime.Now;
        }
    }
}