using Furion.DatabaseAccessor;
|
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
using System;
|
using System.Collections.Generic;
|
using System.ComponentModel.DataAnnotations;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace FlexJobApi.Core
|
{
|
/// <summary>
|
/// 菜单
|
/// </summary>
|
public class Menu : CommonEntity<MasterDbContextLocator, SyncTargetDbContextLocator>, IEntityTypeBuilder<Menu>, ITreeData<Menu>, IIsDisabled
|
{
|
public Menu()
|
{
|
Children = [];
|
}
|
|
/// <summary>
|
/// 用户类型
|
/// </summary>
|
public EnumUserType UserType { get; set; }
|
|
/// <summary>
|
/// 客户端类型
|
/// </summary>
|
public EnumClientType ClientType { get; set; }
|
|
/// <summary>
|
/// 上级Id
|
/// </summary>
|
public Guid? ParentId { get; set; }
|
|
/// <summary>
|
/// 上级
|
/// </summary>
|
public Menu Parent { get; set; }
|
|
/// <summary>
|
/// 下级
|
/// </summary>
|
public List<Menu> Children { get; set; }
|
|
/// <summary>
|
/// 菜单路径
|
/// </summary>
|
public string Path { get; set; }
|
|
/// <summary>
|
/// 编号
|
/// </summary>
|
[Required]
|
public string Code { get; set; }
|
|
/// <summary>
|
/// 名称
|
/// </summary>
|
[Required]
|
[MaxLength(128)]
|
public string Name { get; set; }
|
|
/// <summary>
|
/// 类型
|
/// </summary>
|
public EnumMenuType Type { get; set; }
|
|
/// <summary>
|
/// 访问级别
|
/// </summary>
|
public EnumMenuVisitLevel VisitLevel { get; set; }
|
|
/// <summary>
|
/// 图标
|
/// </summary>
|
public string Icon { get; set; }
|
|
/// <summary>
|
/// 链接地址
|
/// </summary>
|
public string Url { get; set; }
|
|
/// <summary>
|
/// 分组名称(用于按钮/字段)
|
/// </summary>
|
public string Group { get; set; }
|
|
/// <summary>
|
/// 位置(用于按钮)
|
/// </summary>
|
public string Location { get; set; }
|
|
/// <summary>
|
/// 列宽(用于按钮/列/元素)
|
/// </summary>
|
public string Width { get; set; }
|
|
/// <summary>
|
/// 是否禁用
|
/// </summary>
|
public bool IsDisabled { get; set; }
|
|
/// <summary>
|
/// 是否缓存
|
/// </summary>
|
public bool IsCache { get; set; }
|
|
/// <summary>
|
/// 备注
|
/// </summary>
|
public string Remark { get; set; }
|
|
public void Configure(EntityTypeBuilder<Menu> entityBuilder, DbContext dbContext, Type dbContextLocator)
|
{
|
entityBuilder
|
.HasMany(x => x.Children)
|
.WithOne(x => x.Parent)
|
.HasForeignKey(x => x.ParentId)
|
.OnDelete(DeleteBehavior.ClientSetNull);
|
}
|
}
|
}
|