103 lines
2.4 KiB
C#
103 lines
2.4 KiB
C#
using System.ComponentModel.DataAnnotations;
|
|
using Dlhis.Entity.Permission.Enums;
|
|
|
|
namespace Dlhis.Permission.Menu.Request;
|
|
|
|
public class SaveMenuRequest : IValidatableObject
|
|
{
|
|
public int? Id { get; set; }
|
|
|
|
/// <summary>
|
|
/// code
|
|
/// </summary>
|
|
public string Code { get; set; }
|
|
|
|
/// <summary>
|
|
/// 上级
|
|
/// </summary>
|
|
public string PCode { get; set; }
|
|
|
|
/// <summary>
|
|
/// Name
|
|
/// </summary>
|
|
[Required(ErrorMessage = "Name不能为空")]
|
|
public string Name { get; set; }
|
|
|
|
/// <summary>
|
|
/// 标题
|
|
/// </summary>
|
|
[Required(ErrorMessage = "标题不能为空")]
|
|
public string Title { get; set; }
|
|
|
|
/// <summary>
|
|
/// 图标
|
|
/// </summary>
|
|
public string Icon { get; set; }
|
|
|
|
/// <summary>
|
|
/// 路由地址
|
|
/// </summary>
|
|
public string Route { get; set; }
|
|
|
|
/// <summary>
|
|
/// 权限标识
|
|
/// </summary>
|
|
public string Permission { get; set; }
|
|
|
|
/// <summary>
|
|
/// 是否可见
|
|
/// </summary>
|
|
public bool? Visible { get; set; }
|
|
|
|
/// <summary>
|
|
/// 是否为外链
|
|
/// </summary>
|
|
public bool IsLink { get; set; }
|
|
|
|
/// <summary>
|
|
/// 序号
|
|
/// </summary>
|
|
public int Sequence { get; set; }
|
|
|
|
/// <summary>
|
|
/// 菜单类型
|
|
/// </summary>
|
|
[EnumDataType(typeof(MenuEnumType))]
|
|
public MenuEnumType MenuType { get; set; }
|
|
|
|
/// <summary>
|
|
/// 平台
|
|
/// </summary>
|
|
[EnumDataType(typeof(PlatformEnumType))]
|
|
public PlatformEnumType Platform { get; set; }
|
|
|
|
/// <summary>
|
|
/// 兼容reset处理
|
|
/// </summary>
|
|
public List<SaveMenuRequest> Items { get; set; }
|
|
|
|
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
|
|
{
|
|
if ((MenuType == MenuEnumType.Menu || MenuType == MenuEnumType.Button) && string.IsNullOrEmpty(Permission))
|
|
{
|
|
yield return new ValidationResult("当类型为菜单或者按钮时,权限标识不能为空", new[] { nameof(Permission) });
|
|
}
|
|
|
|
if (MenuType == MenuEnumType.Folder && !string.IsNullOrEmpty(PCode))
|
|
{
|
|
yield return new ValidationResult("目录类型无需传入上级code", new[] { nameof(PCode) });
|
|
}
|
|
|
|
//自动生成code
|
|
if (string.IsNullOrEmpty(Code))
|
|
{
|
|
Code = Guid.NewGuid().ToString();
|
|
}
|
|
|
|
if (!Visible.HasValue)
|
|
{
|
|
Visible = true;
|
|
}
|
|
}
|
|
}
|