Git Product home page Git Product logo

zhontai / admin.core Goto Github PK

View Code? Open in Web Editor NEW
1.3K 41.0 314.0 9.28 MB

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

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

License: MIT License

C# 25.09% PowerShell 0.04% CSS 2.34% HTML 0.23% JavaScript 14.33% Vue 42.44% Less 0.41% Dockerfile 0.03% EJS 0.69% TypeScript 12.54% SCSS 1.84% Batchfile 0.01%
dotnet-core freesql csredis swagger nlog autofac automapper fluentvalidation

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  avatar  avatar  avatar  avatar

admin.core's Issues

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

目前框架不支持使用字典进行动态更新,例如下面这样写,会报错:
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;
    }

cs文件文件编码

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

接口数据权限问题

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

ORACLE数据库,出现标识符过长的异常

用ORACLE数据库的时候,会出现标识符过长的异常。

Unhandled exception. System.Exception: ORA-00972: 标识符过长
ORA-06512: 在 line 26
---> Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-00972: 标识符过长
ORA-06512: 在 line 26
at OracleInternal.ServiceObjects.OracleConnectionImpl.VerifyExecution(Int32& cursorId, Boolean bThrowArrayBindRelatedErrors, SqlStatementType sqlStatementType, Int32 arrayBindCount, OracleException& exceptionForArrayBindDML, Boolean& hasMoreRowsInDB, Boolean bFirstIterationDone)
at OracleInternal.ServiceObjects.OracleCommandImpl.ExecuteNonQuery(String commandText, OracleParameterCollection paramColl, CommandType commandType, OracleConnectionImpl connectionImpl, Int32 longFetchSize, Int64 clientInitialLOBFS, OracleDependencyImpl orclDependencyImpl, Int64[]& scnFromExecution, OracleParameterCollection& bindByPositionParamColl, Boolean& bBindParamPresent, OracleException& exceptionForArrayBindDML, OracleConnection connection, OracleLogicalTransaction& oracleLogicalTransaction, Boolean isFromEF)
at Oracle.ManagedDataAccess.Client.OracleCommand.ExecuteNonQuery()
at FreeSql.Internal.CommonProvider.AdoProvider.ExecuteNonQuery(DbConnection connection, DbTransaction transaction, CommandType cmdType, String cmdText, DbParameter[] cmdParms)
--- End of inner exception stack trace ---
at FreeSql.Internal.CommonProvider.CodeFirstProvider.SyncStructure(TypeAndName[] objects)
at FreeSql.Internal.CommonProvider.CodeFirstProvider.SyncStructure(Type[] entityTypes)
at Admin.Core.Db.DbHelper.SyncStructure(IFreeSql db, String msg, DbConfig dbConfig) in D:\GitFolder\Admin.Core\Admin.Core\Db\DbHelper.cs:line 71
at Admin.Core.Db.ServiceCollectionExtensions.AddDb(IServiceCollection services, IHostEnvironment env, AppConfig appConfig) in D:\GitFolder\Admin.Core\Admin.Core\Db\ServiceCollectionExtensions.cs:line 58
at System.Threading.Tasks.Task.<>c.b__139_1(Object state)
at System.Threading.QueueUserWorkItemCallback.<>c.<.cctor>b__6_0(QueueUserWorkItemCallback quwi)
at System.Threading.ExecutionContext.RunForThreadPoolUnsafe[TState](ExecutionContext executionContext, Action`1 callback, TState& state)
at System.Threading.QueueUserWorkItemCallback.Execute()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

模板新建项目只有后端的

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

在Linux 环境下部署Admin.Core

操作系统版本 Linux k8s-master 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
项目信息
net8.0
8.1.0
3.2.820

1.发布文件到文件夹 选择Debug 发布
2.添加并修改dockerfile和docker-compose 修改dll名称 docker-compose修改映射的目录
3.发布文件下的所有内容上传到Linux 目录
4.执行 docker-compose up -d --build 会自动编译并且 自动运行一个实例
5.访问 /admin/swagger/index.html 能弹出swagger 表示部署成功

docker-compose down 停止并删除容器

PS:
1.我修改了 nlog 和upload的 目录 所以docker-compose 映射的目录文件会不一致
2. 我修改了启动的端口 我用的8085
3. 宿主机如果访问swagger 不通 先查看docker logs的 日志 如果没有问题 请确认端口是否打开

部署.zip

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

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

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.

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

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

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

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

后面的没点了。

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

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);
类似路径,文件相关的都适用这个建议

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.