YiMini:基于 .NET 10 + Vben5.7 的RBAC权限管理系统,集成 AI Skills 实现快速开发

Yi.Mini(YiMini) 是基于 橙子Yi.Admin 开发的 RBAC 权限管理框架,后端升级到 .NET 10 + ABP10 + SqlSugar,前端使用 Vben5 Admin 重写,并采用若依风格设计。

别名:YiMini、yimini、yi mini、Yi.Mini、yiabp-mini

它延续 Yi.Admin 在 ABP、DDD、权限管理等方向的工程基础,围绕企业后台和 SaaS 管理端的通用需求重新整理模块边界:以 RBAC 为核心,移除bbs等冗余业务模块,保留租户、设置、审计等基础能力,并补充多租户套餐、文件管理、OSS 配置、权限自动推断、操作记录自动推断等面向项目落地的能力。

Yi.Mini 更关注基础底座的长期可扩展性:后端模块按 ABP 五层结构组织,前端统一到 Vben5.7 + Ant Design Vue 技术栈,
本框架集成AI 开发流程:通过 Superpowers、Module Generator、CRUD Generator Plus、Field Sync 等Skill 固化为明确工作流,用于支撑模块设计、脚手架生成、字段同步和人工审查。

项目地址https://gitee.com/vichen2021/yiabp-mini

在线文档https://docs.wjys.top

演示地址https://yi.wjys.top

项目定位

Yi.Mini 的定位不是完整业务生态杂糅,而是后台基础能力框架。

它主要保留后台系统最常用的一批基础能力:

  • RBAC 权限管理
  • 租户管理
  • 参数配置
  • 审计日志
  • 文件管理
  • OSS 配置
  • 多租户套餐
  • 权限与操作记录自动推断
  • AI 辅助模块生成、CRUD 生成、字段同步

核心目标是:沉淀后台系统高频基础能力,并将业务开发流程规范化、生成化、可维护化。

界面预览

分析页
系统字典
用户管理
菜单管理

技术栈

后端主要技术栈:

项目 技术
框架 .NET 10 + ABP Framework 10
ORM SqlSugar
认证 JWT Bearer
日志 Serilog
后台任务 Hangfire
缓存 FreeRedis / Memory Cache
实时通信 SignalR
对象映射 Mapster

前端主要技术栈:

项目 技术
框架 Vue 3 + TypeScript
管理模板 Vben Admin v5.7
UI Ant Design Vue
构建 Vite
包管理 pnpm
表格 VXE Table

整体上,后端采用 ABP + DDD + SqlSugar,前端采用 Vben5 + Ant Design Vue,并在交互与页面组织上采用若依风格设计。目标是在保持后端边界清晰的同时,提供符合国内后台使用习惯的管理端体验。

DDD 分层和模块边界

后端每个业务模块遵循 5 层结构:

module/{Module}/
├── Yi.Module.{Module}.Domain.Shared
├── Yi.Module.{Module}.Domain
├── Yi.Module.{Module}.Application.Contracts
├── Yi.Module.{Module}.Application
└── Yi.Module.{Module}.SqlSugarCore

各层职责比较清楚:

  • Domain.Shared:枚举、常量、共享模型
  • Domain:实体、聚合根、领域服务、仓储接口
  • Application.Contracts:DTO、服务接口
  • Application:应用服务实现
  • SqlSugarCore:ORM 配置、仓储实现、数据种子

项目里还有一个重要规则:禁止跨模块直接引用 Domain 层。

跨模块协作优先使用:

  1. Application.Contracts 服务接口
  2. 防腐层适配器
  3. 集成事件

这条规则是限界上下文边界的核心约束。否则系统规模上来以后,模块之间直接引用实体、仓储和领域服务,边界会很快失效。

权限控制:减少手动声明

权限系统的难点不只是校验本身,而是权限码需要同时出现在后端服务、菜单种子、按钮权限和前端页面中。只要命名不统一,就会引入长期维护成本。

Yi.Mini 里采用统一权限码格式:

{module}:{entity}:{action}

例如:

system:user:query
system:user:add
system:user:edit
system:user:remove
monitor:operlog:query

标准动作包括:

动作 含义
query 查询、详情、下拉、树等读操作
add 新增、上传、创建等写入操作
edit 编辑、状态变更、同步等更新操作
remove 删除、清空等移除操作
export 导出操作
import 导入操作

对于标准 CRUD 服务,业务服务只需要声明资源:

[PermissionResource("system", "tenantPackage")]
[OperLogEntity("租户套餐")]
public class TenantPackageService : YiCrudAppService<...>
{
}

标准 CRUD 方法会带有统一动作语义,不需要每个方法都重复写一遍权限码。非标准动作再通过 PermissionAction 或显式 Permission 声明。

这样常规 CRUD 的权限语义可以自动推断,显式权限只保留给非标准业务动作和兼容历史权限码的场景。

操作记录:和权限语义复用

操作记录同样不应散落在各个方法里临时声明。Yi.Mini 让操作记录复用 Service Action 元数据,使权限动作与操作日志保持同一套语义。

Yi.Mini 的操作记录复用 Service Action 元数据:

[OperLogEntity("文件")]
public class FileService : ApplicationService
{
}

如果没有显式声明 [OperLog],系统会根据 action 和 [OperLogEntity] 推断日志类型和标题。特殊业务动作再显式声明:

[PermissionAction(PermissionActionEnum.Edit)]
[OperLog("同步租户套餐", OperEnum.Update)]
public async Task SyncPackageAsync(Guid tenantId, Guid packageId)
{
}

这样权限和操作记录共享动作语义,减少重复声明,也降低日志标题和操作类型不一致的概率。

多租户套餐:让租户菜单范围可控

Yi.Mini 的多租户能力以宿主机为管理入口。

宿主机负责:

  • 租户管理
  • 租户套餐
  • 菜单范围
  • 租户数据库初始化
  • 套餐菜单同步

租户侧只使用分配后的菜单和角色权限。

其中关键设计是 租户套餐

租户套餐用于定义租户可用的菜单范围。创建或编辑套餐时,可以选择该套餐允许同步到租户的菜单。租户初始化时,系统会:

  1. 切换到目标租户上下文
  2. 执行租户数据库 CodeFirst
  3. 执行租户侧数据种子
  4. 创建或更新租户管理员账号
  5. 根据租户绑定的套餐同步菜单
  6. 将套餐菜单授权给租户管理员角色

租户最终能看到哪些菜单,来自:

租户套餐菜单范围
  + 租户内角色菜单授权
  + /api/account/router 返回的路由树

套餐控制租户可用菜单上限,角色授权控制租户内实际可见范围。

这使平台治理能力保留在宿主机侧,租户侧只接收套餐范围内的菜单与按钮权限,更适合 SaaS 管理场景。

文件管理和 OSS 配置

文件能力在后台系统里通常会从简单上传逐步演进到以下需求:

  • 文件元数据管理
  • 图片 / 文件上传
  • 本地文件和对象存储切换
  • OSS 访问域名
  • 租户之间文件隔离
  • 租户级配置覆盖
  • 本地文件迁移到 OSS

Yi.Mini 新增了独立的文件管理模块,文件存储基于 ABP Blob Storing,业务代码统一通过 Blob Container 读写文件。

当前支持两种 Provider:

Provider 说明
FileSystem 本地文件系统存储
Aliyun 阿里云 OSS 存储

配置结构类似:

{
  "BlobStoring": {
    "Provider": "FileSystem",
    "PathPrefix": "default",
    "FileSystem": {
      "BasePath": "wwwroot/FileStorage"
    },
    "Aliyun": {
      "AccessKeyId": "",
      "AccessKeySecret": "",
      "Endpoint": "oss-cn-hangzhou.aliyuncs.com",
      "ContainerName": "",
      "CreateContainerIfNotExists": false
    }
  }
}

更关键的是,它支持租户级 OSS 配置。

宿主机可以提供全局默认文件存储配置;租户也可以在自己的上下文中覆盖文件存储配置。租户未配置时,使用默认配置;租户配置后,上传、下载 URL 解析和删除会按当前租户配置执行。

这使文件模块可以进入多租户场景,而不只是停留在单机本地上传。

AI Skills:把生成式开发纳入工程约束

Yi.Mini 的 AI 开发流程不是“让 AI 直接写业务代码”,而是把需求澄清、设计文档、模块生成、CRUD 生成、字段同步和人工审查拆成固定阶段。

项目文档中明确建议:正式开发前,先使用 superpowers skill 与 AI 沟通需求,并输出开发文档。开发文档用于记录:

  • 业务目标
  • 模块边界
  • 实体设计
  • 菜单权限
  • 字典枚举
  • 接口约定
  • 前后端范围
  • 验收标准

随后再进入代码生成阶段:

  • 新增模块必须使用 module-generator
  • 生成 CRUD 必须使用 crud-generator-plus
  • 实体字段变更必须使用 field-sync
  • 不允许绕过 Skill 手写基础 CRUD 脚手架
  • 生成后再人工审查和补充业务逻辑

项目当前可用的 Skills 包括:

  • Superpowers:沟通需求、梳理方案、建立开发文档
  • Module Generator:自动生成完整的 ABP 模块结构
  • CRUD Generator Plus:基于实体生成基础业务模块脚手架,覆盖后端、前端、菜单和系统字典种子数据
  • Field Sync:同步实体字段变更到 DTO、服务、前端 API、视图和字典种子数据
  • Skill Creator:创建自定义技能的指南

这套流程的重点不是让 AI 替代开发者,而是把重复、机械、容易遗漏的脚手架工作交给可复用 Skill,把业务判断、边界控制和质量审查保留给开发者。

VibeCoding 正确开发姿势

Product 产品管理模块为例,文档推荐的流程是先沟通、再建文档、再生成模块、最后补业务逻辑。

第一步:使用 Superpowers 建立开发文档

先向 AI 描述产品管理需求,让 superpowers 帮助追问并形成开发文档。开发文档至少包含:

  • 业务目标:产品管理要解决什么问题
  • 模块名称:例如 Product
  • 实体设计:产品名称、编码、分类、状态、价格、库存等字段
  • 字典/枚举:产品状态、产品类型等
  • 菜单权限:菜单、按钮、权限码范围
  • 前端页面:列表、表单、详情、导入导出等
  • 后端服务:CRUD、校验规则、特殊业务动作
  • 验收标准:构建通过、菜单可见、CRUD 可用、权限生效

第二步:使用 Module Generator 创建 Product 模块

开发文档确认后,使用 module-generator skill 创建 Product 模块。它会生成完整的 ABP 模块结构:

  • Domain.Shared:共享领域模型、枚举、常量
  • Domain:领域实体、领域服务
  • Application.Contracts:应用服务接口和 DTO
  • Application:应用服务实现
  • SqlSugarCore:数据库上下文、种子数据、模块数据库配置

生成后先运行后端构建,确保模块结构正确。

第三步:使用 CRUD Generator Plus 生成基础业务脚手架

模块结构创建完成后,定义产品实体类,再使用 crud-generator-plus skill 生成基础业务代码。它会根据实体生成:

  • 后端代码:实体、DTO、应用服务、接口、查询条件、映射关系
  • 前端代码:API、类型定义、列表页、表单配置、操作按钮
  • 菜单种子数据:模块菜单、列表菜单、按钮权限
  • 系统字典种子数据:枚举或字典字段对应的数据项

第四步:补充业务逻辑并验证

脚手架生成后,再补充产品管理的业务逻辑,例如:

  • 产品编码唯一性校验
  • 产品上下架状态变更
  • 库存和价格校验
  • 导入导出
  • 权限动作和操作记录细化

完成后执行后端构建、前端类型检查和页面功能测试。

适合什么场景

Yi.Mini 更适合这些场景:

  • 企业内部管理后台
  • SaaS 平台基础后台
  • 权限系统快速搭建
  • 偏好若依风格管理端交互的后台项目
  • 需要多租户菜单隔离的管理系统
  • 想用 ABP + SqlSugar + Vue/Vben 的 .NET 项目
  • 想把 AI 辅助开发流程纳入工程规范的团队

如果你要的是完整业务生态演示,或者想看大量业务模块案例,建议优先看 Yi.Admin 原项目。

如果你需要的是以 RBAC、多租户、文件管理、OSS 配置和 AI 生成流程为核心的基础底座,Yi.Mini 会比较合适。

快速开始

后端启动:

dotnet run --project Yi.Abp\src\Yi.Abp.Web\Yi.Abp.Web.csproj

前端启动:

cd Yi.Vben5
pnpm install
pnpm run dev:antd

文档和预览:

  • Gitee 地址:https://gitee.com/vichen2021/yiabp-mini
  • 文档站:https://docs.wjys.top/
  • 在线预览:https://yi.wjys.top/
  • AI 快速开发指南:https://docs.wjys.top/guide/introduction/ai-development.html

写在最后

Yi.Mini 的核心目标是提供一套适合真实项目落地的权限管理基础底座。

它关注几个实际问题:

  • 基础模块边界清晰
  • 权限与操作记录语义统一
  • 多租户菜单范围可控
  • 文件与 OSS 配置能覆盖多租户场景
  • AI 生成代码有流程、有边界、有验证

如果你也在做 .NET 企业后台、SaaS 管理端,或者正在探索 AI 全栈开发,希望 Yi.Mini 能给你一些参考。

欢迎 Star、试用、提 issue,也欢迎一起交流改进。

项目地址:https://gitee.com/vichen2021/yiabp-mini

最后也再次感谢 Yi.Admin 原作者橙子老哥和相关开源项目的基础沉淀。Yi.Mini 能够站在这些项目之上继续做基础能力聚焦和 AI 开发流程探索,这是开源生态带来的价值。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐