Coder Social home page Coder Social logo

zhontai / admin.core Goto Github PK

View Code? Open in Web Editor NEW
1.2K 36.0 292.0 8.98 MB

中台Admin前后端分离的权限管理系统。支持多租户、数据权限、动态Api、任务调度、OSS文件上传、滑块拼图验证、国内外主流数据库自由切换和动态高级查询。基于.Net跨平台开发的WebApi。集成统一认证授权、事件总线、数据验证、分布式缓存、分布式事务、Ip限流、全Api鉴权、集成测试、性能分析、健康检查、接口文档等。

Home Page: https://admin.zhontai.net

License: MIT License

C# 24.48% PowerShell 0.05% CSS 2.43% HTML 0.24% JavaScript 14.83% Vue 42.29% Less 0.43% Dockerfile 0.03% EJS 0.70% TypeScript 12.61% SCSS 1.90% Batchfile 0.01%
dotnet-core freesql csredis swagger nlog autofac automapper fluentvalidation

admin.core's Introduction

中台admin

前后端分离后台权限管理系统

.Net FreeSql Autofac Mapster DotNetCore.CAP license

中文 | English

 

🌈 介绍

基于 .Net8.0 + FreeSql 全家桶 + Autofac + CAP + Mapster 等技术,前后端分离后台权限管理系统。想你所想的开发理念,希望减少工作量,帮助大家实现快速开发。基于 FreeSql Orm 开发,支持国内外主流数据库、读写分离、分表分库、分布式事务 TCC/ SAGA 等功能。启动项目即自动生成数据库,CodeFirst 模式支持从实体配置自动同步表结构和权限数据至数据库。新版 swagger 接口文档更易于接口阅读和测试。

⛱️ 线上预览

💒 代码仓库

🚀 功能介绍

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

⚡ 使用说明

使用 .Net 最新版本 .Net 版本 >= 7.0+

使用项目源码新建项目

# 克隆项目
git clone https://github.com/zhontai/Admin.Core.git

# 进入项目
cd Admin.Core

# 打开项目
打开 ZhonTai.sln 解决方案

# 运行项目
设置 ZhonTai.Host 为启动项目 Ctrl + F5 直接编译运行项目
或 在 ZhonTai.Host 目录打开 cmd 输入 dotnet run 命令运行项目

# 打包发布
选择 ZhonTai.Host 右键菜单点击发布

使用项目模板新建项目

# 安装模板
dotnet new install ZhonTai.Template

# 查看帮助
dotnet new MyApp -h

# 新建项目
dotnet new MyApp -n MyCompanyName.MyProjectName

# 运行项目
设置 MyCompanyName.MyProjectName.Host 为启动项目 Ctrl + F5 直接编译运行项目
或 在 MyCompanyName.MyProjectName.Host 目录打开 cmd 输入 dotnet run 命令运行项目

# 打包发布
选择 MyCompanyName.MyProjectName.Host 右键菜单点击发布

📚 开发文档

💯 学习交流加 QQ 群

中台 admin 开发群(2000 人群)。

💕 特别感谢

❤️ 鸣谢列表

💌 支持作者

如果觉得框架不错,或者已经在使用了,希望你可以去 Github 或者 Gitee 帮我点个 ⭐ Star,这将是对我极大的鼓励与支持。

admin.core's People

Contributors

bulog avatar linjiacheng avatar q6781087 avatar share36 avatar ttonlyv5 avatar yimogit avatar zhontai avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

admin.core's Issues

Mysql5.6.45下创建索引出错。

CREATE UNIQUE INDEX uk_document_image_documentid_url ON admindb.ad_document_image(DocumentId, Url);
Index column size too large. The maximum column size is 767 bytes.

接口数据权限问题

在处理接口数据权限时,UserService中GetDataPermissionAsync获取权限,但是第一次访问该方法已经设置了缓存,key是var key = CacheKeys.DataPermission + User.Id;,每次的key都一样,下次获取数据权限直接从缓存中获取了await Cache.GetOrSetAsync(key,...),即不会根据不同的接口apipath 去判断权限。

目前框架不支持使用字典进行动态更新,希望支持

目前框架不支持使用字典进行动态更新,例如下面这样写,会报错:
Dictionary<string, object> dic = new Dictionary<string, object>();
dic.Add("Id", user.Id);
dic.Add("ModifiedTime", DateTime.Now);
await _userRepository.Orm.UpdateDict(dic).AsTable("app_user").WherePrimary("Id").ExecuteAffrowsAsync();

报错的原因是在DbHelper文件的 AuditValue 【路径是:\src\platform.ZhonTai.Admin\Core\Db\DbHelper.cs】方法里面,e.Property 等于null

目前我是这样解决的

/// <summary>
/// 审计数据
/// </summary>
/// <param name="e"></param>
/// <param name="timeOffset"></param>
/// <param name="user"></param>
public static void AuditValue(AuditValueEventArgs e, TimeSpan timeOffset, IUser user)
{
    //处理使用字典更新时候,Property是空报错问题
    if (e.Property == null)
    {
        return;
    }

点几个菜单都很卡,原因未知

第一次进入后台,以前没访问过。

点员工管理,卡住很久(没有心理准备,没计算时间)才打开新tab,再次进入后台之后一切正常,无法重现。

直接点租户管理,卡住近10s才打开新tab,再次进入后台之后一切正常,无法重现。

后面的没点了。

换浏览器也无法重现,估计跟缓存有关?

模板新建项目只有后端的

通过如下命令建的项目,里面没有前端代码。
dotnet new MyApp -n MyCompanyName.MyProjectName -md true -db MySql
希望加入前端代码

ZhonTai.Common.Helpers.ConfigHelper对路径的处理建议

public static IConfiguration Load(string fileName, string environmentName = "", bool optional = true, bool reloadOnChange = false)方法中在加载配置文件的时候,对文件名进行小写转换,对linux大小写敏感系统有潜在无法找到文件的风险.
var builder = new ConfigurationBuilder() .SetBasePath(filePath) .AddJsonFile(fileName.ToLower() + ".json", optional, reloadOnChange);
类似路径,文件相关的都适用这个建议

cs文件文件编码

似乎不是所有文件的编码都是utf8的,最近几次提交的文件中混有936编码文件。

TransactionInterceptor逻辑不支持嵌套事务。

image

FreeSql_Issues_问题.zip

我写一个demo,测试 这串代码 TransactionInterceptor
AutofacModule 目前使用的你这个项目中的逻辑。

  public class AutofacModule : Autofac.Module
    {
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterType<TransactionInterceptor>();

            builder.RegisterType<BlogService>()
                .InterceptedBy(typeof(TransactionInterceptor))
                .EnableClassInterceptors();

            builder.RegisterType<TagService>().AsSelf()
                .InstancePerLifetimeScope()
                .InterceptedBy(typeof(TransactionInterceptor))
                .EnableClassInterceptors();

            //builder.RegisterType<UnitOfWorkInterceptor>();
            //builder.RegisterType<UnitOfWorkAsyncInterceptor>();

            //builder.RegisterType<BlogService>()
            //    .InterceptedBy(typeof(UnitOfWorkInterceptor))
            //    .EnableClassInterceptors();

            //builder.RegisterType<TagService>().AsSelf()
            //    .InstancePerLifetimeScope()
            //    .InterceptedBy(typeof(UnitOfWorkInterceptor))
            //    .EnableClassInterceptors();
        }
    }

image

然后多次调用这个接口,连接点击。就会报错了。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.