中台框架后端项目 Admin.Core 的介绍与配置说明

中台admin是前后端分离权限管理系统,Admin.Core为后端项目,基于.NET 7.0开发。

支持多租户、数据权限、动态 Api、任务调度、OSS 文件上传、滑块拼图验证、多数据库,分布式缓存、分布式事务等

  • 接口文档一览

  • 项目地址

  • 技术栈

    • dotnet7
    • FreeSql
    • Autofac
    • CAP
    • Mapster
  • 特点

    • 快速启动,上手简单
    • 系统模块化
    • Swagger的模块化封装
    • 读写分离
    • 分库分表
    • 分布式事务 TCC/ SAGA
    • 动态API
    • 系统权限封装基本满足大部分项目
    • 多租户实现
  • 开发环境

    • Vs2022
    • dotnet7
  • 项目结构

    • hosts

      • ZhonTai.Host:默认启动项目,添加对 ZhonTai.Admin.Dev,模块的引用,并将程序集配置到 assemblyNames
    • platform
      • ZhonTai.Admin 核心服务
      • ZhonTai.ApiUI 接口文档封装,分模块加载
      • zhonTai.Common 通用库封装
      • ZhonTai.DynamicApi 动态WebApi库
      • ZhonTai.Admin.Dev 代码生成器添加
    • tests
      • ZhonTai.Tests 测试库
    • modules
      • XX.XX 我准备放自己的模块

默认实现功能

  1. 用户管理:配置用户,查看部门用户列表,支持禁用/启用、重置密码、设置主管、用户可配置多角色、多部门和上级主管。
  2. 角色管理:配置角色,支持角色分组、设置角色菜单和数据权限、批量添加和移除角色员工。
  3. 部门管理:配置部门,支持树形列表展示。
  4. 权限管理:配置分组、菜单、操作、权限点、权限标识,支持树形列表展示。
  5. 租户套餐:配置租户套餐,支持新增/移除套餐企业。
  6. 租户管理:配置租户,新增租户时初始化部门、角色和管理员数据,支持租户配置套餐、禁用/启用功能。
  7. 字典管理:配置字典,查看字典类型和字典数据列表,支持字典类型和字典数据维护。
  8. 任务调度:查看任务和任务日志列表,支持任务启动、执行、暂停等功能。
  9. 缓存管理:缓存列表查询,支持根据缓存键清除缓存
  10. 接口管理:配置接口,支持接口同步功能,用于新增权限点选择接口,支持树形列表展示。
  11. 视图管理:配置视图,支持视图维护功能,用于新增菜单选择视图,支持树形列表展示。
  12. 文件管理:支持文件列表查询、文件上传/下载、查看大图、复制文件地址、删除文件功能。
  13. 登录日志:登录日志列表查询,记录用户登录成功和失败日志。
  14. 操作日志:操作日志列表查询,记录用户操作正常和异常日志。

框架的使用

1. 从GitHub 克隆/下载项目

  • 后端:git clone https://github.com/zhontai/Admin.Core.git
  • 前端:git clone https://github.com/zhontai/admin.ui.plus.git

2. 后端项目的启动

使用新下的VS2022打开后,默认启动项目 ZhonTai.Host ,直接Ctrl+F5运行即可

系统将会根据实体生成数据库及表,并根据 Configs/dbconfig.json 配置将 initData/*.json 的数据生成到本地Sqlite中

(ps:第一次搞dotnet7的项目,vs2019+自己下SDK折腾半天搞不了一点,需要vs2022 17.4+)

3. 配置文件说明

  • launchSettings.json

    • 默认本地启动配置

      • 配置项

        • 运行环境

          • ASPNETCORE_ENVIRONMENT:Development
        • 启动端口
          • 默认:8000
          • 优先级低于appconfig.urls的配置
  • appsettings.{Env}.json

    • 默认的应用配置文件
    • 配置项
      • 日志等级

        • 默认:Information
      • 跨域
        • 默认:*
      • CAP配置
        • 默认:未启用
      • 滑动验证码
        • 默认:300s有效期
        • 是否开启在appconfig.json配置varifyCode.enable
  • Configs*.{Env}.json

    • 自定义的应用配置文件
    • dbconfig.json
      • 数据库配置
      • 绑定模型
        • 单例:DbConfig
      • 配置项
        • 支持类型:type

          • 默认:Sqlite

            MySql = 0, SqlServer = 1, PostgreSQL = 2,Oracle = 3, Sqlite = 4, OdbcOracle = 5,OdbcSqlServer = 6, OdbcMySql = 7,OdbcPostgreSQL = 8, Odbc = 9, OdbcDameng =10, MsAccess = 11, Dameng = 12,OdbcKingbaseES = 13, ShenTong = 14,KingbaseES = 15, Firebird = 16
        • 连接字符串:connectionString
          • 默认:admindb.db
        • 同步结构
          • syncStructure:true

            • 默认启用
            • 分布式部署需要注意关闭
          • 监听同步结构脚本 syncStructureSql:false

          将会输出codeFirst执行的脚本

          将 assemblyNames 配置的所有实体执行结构移 db.CodeFirst.SyncStructure 

          1.创建临时表

          2.插入历史数据,修改字段名称情况注意

          3.删除旧表,重命名临时表为新表

          生产上该自己执行脚本的还是自己执行

        • 同步数据
          • syncData:true
          • sysUpdateData:false
            • 同步更新数据
            • 确定要修改表数据是最新数据再开启,除localdb测试就不要使用
          • syncDataIncludeTables:[]
            • 同步数据包含表,指定表同步,不填同步所有表
          • syncDataExcludeTables:[]
            • 同步数据排除表,指定表不同步
          • syncDataUser
            • 同步数据操作用户
          • syncDataPath
            • 不配置默认为  项目目录/InitData/Admin
            • 默认会将文件夹下的所有 表名.json 添加到数库中,默认新增所有数据
            • 如果是租户数据,格式为 表.tenant.json
          • syncDataCurd:false
            • 监听同步数据Curd操作

          设置是否将syncDataPath文件夹下的 表名.json 加/修改到数据库中

        • 生成数据
          • generateData:true

            默认开启但无效,需要将禁用创建数据库及禁用步:createDb:false && syncData:false
          • 加了视图菜单就可以使用这个功能来创建生成默认数据
  • cacheconfig.json

    • 缓存配置,未绑定模型,redis缓存,限流参数配置
    • 配置项
      • 支持类型

        • 默认:Memory
        • Memory = 0,Redis = 1
      • 限流缓存类型
        • 默认:Memory
        • Memory = 0,Redis = 1
      • Redis配置
        • 127.0.0.1:6379
  • appconfig.json

    • 应用配置
    • 绑定模型
      • 单例: AppConfig
    • 配置项
      • appType 应用程序类型

        • 默认:Controllers
        • Controllers ControllersWithViews MVC
      • urls 启动地址
        • http://*:8000
      • corUrls 跨域
        • []
      • assemblyNames 程序集名称
        • ZhonTai.Admin
        • Mapster自动注册程序集
      • tenantc租户
        • true
      • distributeKey 分布式事务唯一标识
        • 为空则不生成分布式事务表
      • validate 验证开关
        • 登录,接口权限,数据权限验证
      • swagger Swagger文档s
      • apiUI 接口文档地址
      • MiniProfiler 性能分析器
        • false
      • identityServer 统一认证授权服务器
        • false
      • aop 面向切面编程s
        • 开启事务
      • log 数据库日志
        • 操作日志
      • rateLimit 限流开关
        • false
      • varifyCode 登录验证码
        • true
      • defaultPassword 默认密码
        • 111111
      • dynamicApi 动态api
        • 结果格式化
      • passwordHasher 标准标识密码哈希
        • 启用后相同密码加密后各不相同
      • maxRequestBodySize 最大请求大小
        • 104857600
      • healthChecks 健康检查
        • enable:true 启用
        • path:/admin/health
  • jwtconfig.json

    • JWT配置
    • 绑定模型
      • 单例:JwtConfig
    • 配置项
      • issuer 发行者
      • audience 订阅者
      • securityKey 密钥
      • expires 有效期(分钟) 120
      • refreshExpires 刷新有效期(分钟) 1440
  • ossconfig.json

    • 本地上传配置
    • 绑定模型
      • IOptions<OSSConfig>
    • OSS配置
      • Minio
      • 阿里云
      • 腾讯云
      • 七牛
      • 华为云
  • uploadconfig.json

    • 上传配置
    • 绑定模型
      • IOptions<UploadConfig>
  • ratelimitconfig.json

    • 限流配置
    • 绑定模型
      • IOptions
    • 支持类型
      • IP限流

        • 默认未启用
        • 需要在appconfig.json中配置rateLimit:true生效
        • 使用Redis实现限流
        • 需要在cacheconfig.json中配置typeRateLimit
  • InitData\模块*.{tenant}.json

    • 默认初始化数据

4. 代码生成

前端及代码生成见下篇

写在最后

文章的起因是想找个不错的框架用来搞个自己用的系统,找了几个dotnet+vue的框架,zhontai的这个是看到上手最容易,前后台的代码也没有封装得太深,二开也很方便,看着用着都挺舒服的。

唯一的不足就是文档了,一点资料都找不到,就只能一点点看代码,然后边看边记录,以备后用,又想着既然都写了,那就再整理一下了,顺便分享出来咯,希望能够对后面使用框架的有所帮助。

01.前后端分离中台框架后端 Admin.Core 学习-介绍与配置说明的更多相关文章

  1. 【开源】【前后端分离】【优雅编码】分享我工作中的一款MVC+EF+IoC+Layui前后端分离的框架——【NO.1】框架概述

    写博客之前总想说点什么,但写的时候又忘了想说点什么,算了,不说了,还是来送福利吧. 今天是来分享我在平时工作中搭建的一套前后端分离的框架. 平时工作大多时候都是在做管理类型的软件开发,无非就是增.删. ...

  2. JEECG前后端分离UI框架实战版本抢先体验(ng2-admin+Angular4+AdminLTE+WebStorm)

    JEECG前后端分离UI框架实战版本 - 抢先体验 (ng2-admin+Angular4+AdminLTE) 关键词: ng2-admin.Angular4.AdminLTE.Nodejs.Jeec ...

  3. JEECG前后端分离UI框架实战抢先体验(ng2-admin+Angular4+AdminLTE+WebStorm)

    JEECG前后端分离UI框架 (ng2-admin+Angular4+AdminLTE) 关键词: ng2-admin.Angular4.AdminLTE.Nodejs.Jeecg JEECG紧跟技术 ...

  4. 一套.NET Core +WebAPI+Vue前后端分离权限框架

    今天给大家推荐一个基于.Net Core开发的企业级的前后端分离权限框架. 项目简介 这是基于.NetCore开发的.构建的简单.跨平台.前后端分离的框架.此项目代码清晰.层级分明.有着完善的权限功能 ...

  5. springboot + mybatis 前后端分离项目的搭建 适合在学习中的大学生

    人生如戏,戏子多半掉泪! 我是一名大四学生,刚进入一家软件件公司实习,虽说在大学中做过好多个实训项目,都是自己完成,没有组员的配合.但是在这一个月的实习中,我从以前别人教走到了现在的自学,成长很多. ...

  6. nginx反向代理前后端分离项目(后端多台)

    目前软件架构都比较流行前后端分离,前后端的分离也实现了前后端架构的分离,带来的好处 —— 整个项目的开发权重往前移,实现真正的前后端解耦,动态资源和静态资源分离,提高了性能和扩展性. 通常Spring ...

  7. 关于flask(前后端分离)的后端开发的小白笔记整理(含postman,jwt,json,SQLAlchemy等)

    首先是提醒自己的一些唠嗑: 学会劳逸结合,文档看累了可以看视频,动手操作很关键,遇到问题先动脑子冷静地想,不要跟着步骤都不带脑子,想不出来了再查一查!有时候打出来的代码很虚,但是实践不花钱,实践出真知 ...

  8. 前后端分离项目获取后端跨控制器获取不到session

    最近做前后端分离项目(.net core web api  +vue)时,后台跨控制器不能获取到session.由于配置的是共享的session.本来以为是共享session出了问题,就在共享sess ...

  9. 从零开始搭建前后端分离的NetCore(EF Core CodeFirst+Au)+Vue的项目框架之二autofac解耦

    在 上一篇 中将项目的基本骨架搭起来能正常跑通,这一篇将讲到,如何通过autofac将DbContext和model进行解耦,只用添加model,而不用在DbContext中添加DbSet. 在这里就 ...

  10. Springboot前后端分离中,后端拦截器拦截后,前端没有对应的返回码可以判断

    项目登录流程如下 用户进入前端登录界面,输入账号密码等,输入完成之后前端发送请求到后端(拦截器不会拦截登录请求),后端验证账号密码等成功之后生成Token并存储到数据库,数据库中包含该Token过期时 ...

随机推荐

  1. JavaWeb编程面试题——Spring Boot

    引言 面试题==知识点,这里所记录的面试题并不针对于面试者,而是将这些面试题作为技能知识点来看待.不以刷题进大厂为目的,而是以学习为目的.这里的知识点会持续更新,目录也会随时进行调整. 关注公众号:编 ...

  2. 花了半天时间,使用spring-boot实现动态数据源,切换自如

      在一个项目中使用多个数据源的情况很多,所以动态切换数据源是项目中标配的功能,当然网上有相关的依赖可以使用,比如动态数据源,其依赖为, <dependency> <groupId& ...

  3. 深度学习应用篇-推荐系统[12]:经典模型-DeepFM模型、DSSM模型召回排序策略以及和其他模型对比

    深度学习应用篇-推荐系统[12]:经典模型-DeepFM模型.DSSM模型召回排序策略以及和其他模型对比 1.DeepFM模型 1.1.模型简介 CTR预估是目前推荐系统的核心技术,其目标是预估用户点 ...

  4. Rust 过程宏 proc-macro 是个啥

    定义一个 procedural macro 新建一个 lib 类型的 crate: cargo new hello-macro --lib procedural macros 只能在 proc-mac ...

  5. Bean生命周期的扩展点:Bean Post Processor

    摘要:在本篇文章中,我们将深入探讨Spring框架中的重要组件--BeanPostProcessor.首先,我们将了解其设计理念和目标,然后通过实际的例子学习如何基础使用它,如何通过BeanPostP ...

  6. 【Shell】函数

    函数 1.语法 函数定义语法如下: [ function ] funname [()] { action; [return int;] } 说明 : 函数定义时,function 关键字可有可无. 函 ...

  7. Failed to connect to 127.0.0.1 port 1080: Connection refused拒绝连接错误

    一.git拒绝连接原因分析 使用git从远程仓库下载代码出现上述的错误是因为使用了proxy代理,所以要解决该问题,核心操作就是要取消代理 二.解决方式 1.查看Linux当前有没有使用代理 通过gi ...

  8. nacos适配达梦、瀚高、人大金仓数据库及部分源码探究

    一.插件实现 1.插件目录结构 2.pom依赖 <dependency> <groupId>com.alibaba.nacos</groupId> <arti ...

  9. DDD架构为什么应该首选六边形架构?

    一.传统分层架构 分层架构的一个重要原则是:每层只能与位于其下方的层发生耦合. 分层架构分两种:一种是严格分层架构,规定某层只能与直接位于其下方的层发生耦合:另一种是松散分层架构,允许任意上方层与任意 ...

  10. Spring的依赖注入方式(set及constructor)

    Bean的依赖注入方式: set方法注入 P命名空间注入本质也是set方法注入,但比起上面的set方法进行注入更加方便,主要体现在配置文件中,如下: 首先,引入P命名空间: xmlns:p=" ...