FieldPathTreeNodeDto.cs 2.33 KB
using Rcs.Domain.Enums;

namespace Rcs.Application.DTOs
{
    /// <summary>
    /// 字段路径树节点 DTO
    /// 用于动作参数来源路径的多级下拉框数据源
    /// @author zzy
    /// </summary>
    public class FieldPathTreeNodeDto
    {
        /// <summary>
        /// 字段名称(代码标识)
        /// </summary>
        public string Name { get; set; } = string.Empty;

        /// <summary>
        /// 字段显示名称(中文描述)
        /// </summary>
        public string DisplayName { get; set; } = string.Empty;

        /// <summary>
        /// 字段类型(string/int/double/bool/enum/object/array)
        /// </summary>
        public string Type { get; set; } = string.Empty;

        /// <summary>
        /// 完整路径(点分隔,如:RobotId、RobotCode、State.BatteryLevel)
        /// </summary>
        public string Path { get; set; } = string.Empty;

        /// <summary>
        /// 是否有子节点(用于前端判断是否可展开)
        /// </summary>
        public bool HasChildren { get; set; }

        /// <summary>
        /// 子节点列表(懒加载时可为空)
        /// </summary>
        public List<FieldPathTreeNodeDto>? Children { get; set; }

        /// <summary>
        /// 枚举类型的可选值(当 Type 为 enum 时填充)
        /// </summary>
        public List<EnumValueDto>? EnumValues { get; set; }
    }

    /// <summary>
    /// 枚举值 DTO
    /// @author zzy
    /// </summary>
    public class EnumValueDto
    {
        /// <summary>
        /// 枚举值
        /// </summary>
        public int Value { get; set; }

        /// <summary>
        /// 枚举显示名称
        /// </summary>
        public string DisplayName { get; set; } = string.Empty;

        /// <summary>
        /// 枚举名称(代码标识)
        /// </summary>
        public string Name { get; set; } = string.Empty;
    }

    /// <summary>
    /// 字段路径树根节点响应 DTO
    /// @author zzy
    /// </summary>
    public class FieldPathTreeResponseDto
    {
        /// <summary>
        /// 来源类型
        /// </summary>
        public ParameterSourceType SourceType { get; set; }

        /// <summary>
        /// 根节点列表
        /// </summary>
        public List<FieldPathTreeNodeDto> RootNodes { get; set; } = new();
    }
}