| 12345678910111213141516171819202122232425262728293031323334 |
- using SqlSugar;
- namespace Admin.NET.Plugin.AiDOP.Entity;
- /// <summary>
- /// 租户级菜单抑制清单:登记「某菜单全局存在、但指定租户不应看到」的 (TenantId, MenuId) 对。
- ///
- /// 存在原因:<c>AidopMenuLinkSync.EnsureLinked</c> 每次启动会把 Ai-DOP 种子菜单回填到全部租户的
- /// <c>SysTenantMenu</c>,判据仅为「这行还在吗」。因此直接删除 <c>SysTenantMenu</c> 行(无论手工 SQL
- /// 还是走 <c>SysTenantService.GrantMenu</c> 页面取消授权)都活不过一次重启。本表给回填逻辑一个
- /// 「这是有意取消的,别再补回来」的显式信号,并由启动逻辑强制执行,使抑制在重启后自愈。
- ///
- /// 边界:只影响本表登记的租户;不改 <c>SysMenu</c> 全局定义,不改 <c>SysRoleMenu</c>。
- /// 撤销抑制 = 删除本表对应行并重启,回填逻辑会按原主键把授权补回。
- /// </summary>
- [SugarTable("ado_tenant_menu_suppression", "租户级菜单抑制清单")]
- [SugarIndex("uk_tenant_menu_suppression", nameof(TenantId), OrderByType.Asc, nameof(MenuId), OrderByType.Asc, true)]
- public class AdoTenantMenuSuppression
- {
- [SugarColumn(ColumnDescription = "主键", IsPrimaryKey = true, IsIdentity = true, ColumnDataType = "bigint")]
- public long Id { get; set; }
- [SugarColumn(ColumnDescription = "租户 Id(SysTenant.Id)", ColumnDataType = "bigint")]
- public long TenantId { get; set; }
- [SugarColumn(ColumnDescription = "菜单 Id(SysMenu.Id)", ColumnDataType = "bigint")]
- public long MenuId { get; set; }
- [SugarColumn(ColumnDescription = "抑制原因(为何该租户不应看到该菜单)", Length = 256, IsNullable = true)]
- public string? Reason { get; set; }
- [SugarColumn(ColumnDescription = "创建时间")]
- public DateTime CreatedAt { get; set; }
- }
|