xiaoxue пре 5 година
родитељ
комит
0daa47f8fe

+ 12 - 0
Admin.Core.Common/Attributes/SingletonAttribute.cs

@@ -0,0 +1,12 @@
+using System;
+
+namespace Admin.Core.Common.Attributes
+{
+    /// <summary>
+    /// 单例注入
+    /// </summary>
+    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Property)]
+    public class SingleInstanceAttribute : Attribute
+    {
+    }
+}

+ 1 - 1
Admin.Core.Common/Attributes/TransactionAttribute.cs

@@ -2,7 +2,7 @@
 using System.Data;
 using FreeSql;
 
-namespace Admin.Core.Common
+namespace Admin.Core.Common.Attributes
 {
     /// <summary>
     /// 启用事物

+ 5 - 0
Admin.Core.Common/Configs/UploadConfig.cs

@@ -74,6 +74,11 @@
         /// </summary>
         public long Size { get; set; }
 
+        /// <summary>
+        /// 最大允许上传个数 -1不限制
+        /// </summary>
+        public int Limit { get; set; } = -1;
+
         /// <summary>
         /// 文件格式
         /// </summary>

+ 1 - 1
Admin.Core.Common/Extensions/GuidExtensions.cs

@@ -1,6 +1,6 @@
 using System;
 
-namespace Admin.Core
+namespace Admin.Core.Extensions
 {
     public static class GuidExtensions
     {

+ 1 - 1
Admin.Core.Services/Admin/Api/ApiService.cs

@@ -2,13 +2,13 @@ using System.Linq;
 using System.Threading.Tasks;
 using System.Collections.Generic;
 using AutoMapper;
-using Admin.Core.Common;
 using Admin.Core.Model.Input;
 using Admin.Core.Model.Output;
 using Admin.Core.Model.Admin;
 using Admin.Core.Repository.Admin;
 using Admin.Core.Service.Admin.Api.Input;
 using Admin.Core.Service.Admin.Api.Output;
+using Admin.Core.Common.Attributes;
 
 namespace Admin.Core.Service.Admin.Api
 {

+ 1 - 2
Admin.Core.Services/Admin/Permission/PermissionService.cs

@@ -3,14 +3,13 @@ using System.Linq;
 using System.Threading.Tasks;
 using System.Collections.Generic;
 using AutoMapper;
-using Admin.Core.Common;
 using Admin.Core.Repository.Admin;
 using Admin.Core.Model.Admin;
 using Admin.Core.Model.Output;
 using Admin.Core.Service.Admin.Permission.Input;
 using Admin.Core.Service.Admin.Permission.Output;
 using Admin.Core.Common.Cache;
-
+using Admin.Core.Common.Attributes;
 
 namespace Admin.Core.Service.Admin.Permission
 {	

+ 2 - 2
Admin.Core.Services/Admin/User/UserService.cs

@@ -2,7 +2,6 @@ using System.Linq;
 using System.Threading.Tasks;
 using System.Collections.Generic;
 using AutoMapper;
-using Admin.Core.Common;
 using Admin.Core.Common.Helpers;
 using Admin.Core.Common.Auth;
 using Admin.Core.Common.Cache;
@@ -13,6 +12,7 @@ using Admin.Core.Repository.Admin;
 using Admin.Core.Service.Admin.User;
 using Admin.Core.Service.Admin.User.Input;
 using Admin.Core.Service.Admin.User.Output;
+using Admin.Core.Common.Attributes;
 
 namespace Admin.Core.FrameWork.Service.User
 {
@@ -79,7 +79,7 @@ namespace Admin.Core.FrameWork.Service.User
             return ResponseOutput.Ok(data);
         }
 
-        [Transaction(Propagation = FreeSql.Propagation.Requierd)]
+        [Transaction]
         public async Task<IResponseOutput> AddAsync(UserAddInput input)
         {
             if (input.Password.IsNull())

+ 1 - 1
Admin.Core.Services/Admin/View/ViewService.cs

@@ -2,13 +2,13 @@ using System.Linq;
 using System.Collections.Generic;
 using System.Threading.Tasks;
 using AutoMapper;
-using Admin.Core.Common;
 using Admin.Core.Model.Output;
 using Admin.Core.Model.Input;
 using Admin.Core.Model.Admin;
 using Admin.Core.Repository.Admin;
 using Admin.Core.Service.Admin.View.Input;
 using Admin.Core.Service.Admin.View.Output;
+using Admin.Core.Common.Attributes;
 
 namespace Admin.Core.Service.Admin.View
 {

+ 1 - 2
Admin.Core/Aop/TransactionInterceptor.cs

@@ -2,10 +2,9 @@
 using System.Threading.Tasks;
 using Castle.DynamicProxy;
 using FreeSql;
-using Admin.Core.Common;
 using Admin.Core.Extensions;
 using Admin.Core.Model.Output;
-using System.Data;
+using Admin.Core.Common.Attributes;
 
 namespace Admin.Core.Aop
 {

+ 1 - 1
Admin.Core/Db/ServiceCollectionExtensions.cs

@@ -46,7 +46,7 @@ namespace Admin.Core.Db
             #endregion
 
             var fsql = freeSqlBuilder.Build();
-
+            //fsql.GlobalFilter.Apply<IEntitySoftDelete>("SoftDelete", a => a.IsDeleted == false);
             services.AddFreeRepository(filter => filter.Apply<IEntitySoftDelete>("SoftDelete", a => a.IsDeleted == false));
             services.AddScoped<UnitOfWorkManager>();
             services.AddSingleton(fsql);

+ 2 - 0
Admin.Core/Logs/ApiHelper.cs

@@ -4,12 +4,14 @@ using System.Collections.Generic;
 using Newtonsoft.Json;
 using Admin.Core.Common.Helpers;
 using Admin.Core.Db;
+using Admin.Core.Common.Attributes;
 
 namespace Admin.Core.Logs
 {
     /// <summary>
     /// Api帮助类
     /// </summary>
+    [SingleInstance]
     public class ApiHelper
     {
         private List<ApiHelperDto> _apis;

+ 12 - 5
Admin.Core/Startup.cs

@@ -33,6 +33,7 @@ using Admin.Core.Aop;
 using Admin.Core.Logs;
 using PermissionHandler = Admin.Core.Auth.PermissionHandler;
 using Admin.Core.Extensions;
+using Admin.Core.Common.Attributes;
 
 namespace Admin.Core
 {
@@ -51,7 +52,6 @@ namespace Admin.Core
         public void ConfigureServices(IServiceCollection services)
         {
             services.AddSingleton(_appConfig);
-            services.AddSingleton(typeof(ApiHelper));
 
             //上传配置
             var uploadConfig = new ConfigHelper().Load("uploadconfig", _env.EnvironmentName, true);
@@ -228,8 +228,8 @@ namespace Admin.Core
                 #endregion
 
                 #region Service
-                var assemblysServices = Assembly.Load("Admin.Core.Service");
-                builder.RegisterAssemblyTypes(assemblysServices)
+                var assemblyServices = Assembly.Load("Admin.Core.Service");
+                builder.RegisterAssemblyTypes(assemblyServices)
                 .AsImplementedInterfaces()
                 .InstancePerDependency()
                 .EnableInterfaceInterceptors()
@@ -237,11 +237,18 @@ namespace Admin.Core
                 #endregion
 
                 #region Repository
-                var assemblysRepository = Assembly.Load("Admin.Core.Repository");
-                builder.RegisterAssemblyTypes(assemblysRepository)
+                var assemblyRepository = Assembly.Load("Admin.Core.Repository");
+                builder.RegisterAssemblyTypes(assemblyRepository)
                 .AsImplementedInterfaces()
                 .InstancePerDependency();
                 #endregion
+
+                //单例注入
+                var assemblyCore = Assembly.Load("Admin.Core");
+                var assemblyCommon = Assembly.Load("Admin.Core.Common");
+                builder.RegisterAssemblyTypes(assemblyCore,assemblyCommon)
+                .Where(t => t.GetCustomAttribute<SingleInstanceAttribute>() != null)
+                .SingleInstance();
             }
             catch (Exception ex)
             {

+ 2 - 0
Admin.Core/configs/uploadconfig.json

@@ -28,6 +28,8 @@
     "format": "{0}",
     //文件大小 10M = 10 * 1024 * 1024
     "size": 10485760,
+    //最大允许上传个数,-1不限制
+    "limit": -1,
     //文件格式
     "contentType": [ "image/jpg", "image/png", "image/jpeg", "image/gif" ]
   }