LanYinSettings.cs 2.95 KB
namespace Rcs.Domain.Settings;


/// <summary>
/// LanYin系统配置
/// </summary>
public class LanYinSettings
{

    /// <summary>
    /// API基础URL
    /// </summary>
    public string BaseUrl { get; set; } = string.Empty;

    /// <summary>
    /// API密钥
    /// </summary>
    public string? ApiKey { get; set; }

    /// <summary>
    /// 认证Token
    /// </summary>
    public string? AuthToken { get; set; }

    /// <summary>
    /// 登录账号(用于自动重新登录)
    /// </summary>
    public string? Account { get; set; }

    /// <summary>
    /// 登录密码(用于自动重新登录)
    /// </summary>
    public string? Password { get; set; }

    /// <summary>
    /// 超时时间(秒)
    /// </summary>
    public int TimeoutSeconds { get; set; } = 30;

    /// <summary>
    /// 重试次数
    /// </summary>
    public int RetryCount { get; set; } = 3;

    /// <summary>
    /// 是否启用
    /// </summary>
    public bool Enabled { get; set; } = true;

    /// <summary>
    /// API端点配置
    /// </summary>
    public LanYinEndpoints Endpoints { get; set; } = new();

    /// <summary>
    /// WebSocket配置
    /// @author zzy
    /// </summary>
    public LanYinWsSettings WebSocket { get; set; } = new();
}

/// <summary>
/// LanYin API端点配置
/// </summary>
public class LanYinEndpoints
{
    /// <summary>
    /// 登录端点
    /// </summary>
    public string Login { get; set; } = "/user_backend/users/login";
    /// <summary>
    /// 获取库位信息端点
    /// </summary>
    public string GetLocations { get; set; } = "/map_server/locations/";

    /// <summary>
    /// 任务下发端点
    /// </summary>
    public string DispatchTask { get; set; } = "/dispatch_server/dispatch/start/location_call/task/";

    /// <summary>
    /// 确认工况异常端点
    /// @author zzy
    /// </summary>
    public string ConfirmException { get; set; } = "/master_server/hosts/exception/";

    /// <summary>
    /// 取消任务端点
    /// @author zzy
    /// </summary>
    public string CancelTask { get; set; } = "/dispatch_server/dispatch/cancel/task/";

    /// <summary>
    /// 复位机器人
    /// @author zzy
    /// </summary>
    public string ResetRobot { get; set; } = "/master_server/master/fix_errors/";
}

/// <summary>
/// 蓝音 WebSocket 配置
/// @author zzy
/// </summary>
public class LanYinWsSettings
{
    public string WebSocketUrl { get; set; } = "ws://localhost:8080/ws";

    /// <summary>
    /// 订阅主题配置
    /// </summary>
    public LanYinWsTopics Topics { get; set; } = new();
}

/// <summary>
/// 蓝音 WebSocket 订阅主题配置
/// @author zzy
/// </summary>
public class LanYinWsTopics
{
    public string RobotStatus { get; set; } = "robot_status";
    public string RobotInfo { get; set; } = "robot_info";
    public string RobotRealtimePath { get; set; } = "robot_realtime_path";

    public List<string> ToList() => [RobotStatus, RobotInfo, RobotRealtimePath];
}