diff --git a/WorkData/WorkData.Apollo/WorkData.Apollo.csproj b/WorkData/WorkData.Apollo/WorkData.Apollo.csproj new file mode 100644 index 0000000..f958c07 --- /dev/null +++ b/WorkData/WorkData.Apollo/WorkData.Apollo.csproj @@ -0,0 +1,11 @@ + + + + netstandard2.0 + + + + + + + diff --git a/WorkData/WorkData.ApolloWeb/ApiController/ValuesController.cs b/WorkData/WorkData.ApolloWeb/ApiController/ValuesController.cs new file mode 100644 index 0000000..7ec2903 --- /dev/null +++ b/WorkData/WorkData.ApolloWeb/ApiController/ValuesController.cs @@ -0,0 +1,21 @@ +using Microsoft.AspNetCore.Mvc; +using WorkData.Code.JwtSecurityTokens; +using WorkData.Dependency; +using Newtonsoft.Json; +using System; +using WorkData.EntityFramework; + +namespace WorkData.ApolloWeb.ApiController +{ + [ApiController] + [Route("api/Values")] + public class ValuesController : Controller + { + [HttpGet] + public IActionResult Get(string key) + { + var data = IocManager.Instance.ResolveServiceValue(key); + return Json(data); + } + } +} \ No newline at end of file diff --git a/WorkData/WorkData.ApolloWeb/Config/hosting.json b/WorkData/WorkData.ApolloWeb/Config/hosting.json new file mode 100644 index 0000000..2c7b5f0 --- /dev/null +++ b/WorkData/WorkData.ApolloWeb/Config/hosting.json @@ -0,0 +1,3 @@ +{ + "server.urls": "http://+:8100" +} \ No newline at end of file diff --git a/WorkData/WorkData.ApolloWeb/Config/moduleConfig.json b/WorkData/WorkData.ApolloWeb/Config/moduleConfig.json new file mode 100644 index 0000000..729195c --- /dev/null +++ b/WorkData/WorkData.ApolloWeb/Config/moduleConfig.json @@ -0,0 +1,7 @@ +{ + "modules": [ + { + "type": "WorkData.ApolloWeb.WorkDataApolloWebModule,WorkData.ApolloWeb" + } + ] +} \ No newline at end of file diff --git a/WorkData/WorkData.ApolloWeb/Program.cs b/WorkData/WorkData.ApolloWeb/Program.cs new file mode 100644 index 0000000..ed32d8f --- /dev/null +++ b/WorkData/WorkData.ApolloWeb/Program.cs @@ -0,0 +1,34 @@ +using Autofac.Extensions.DependencyInjection; +using Com.Ctrip.Framework.Apollo; +using Microsoft.AspNetCore; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Hosting; +using System.IO; +using WorkData.EntityFramework; + +namespace WorkData.ApolloWeb +{ + public class Program + { + public static void Main(string[] args) + { + var host = BuildWebHost(args); + host.Run(); + } + + public static IWebHost BuildWebHost(string[] args) => + WebHost.CreateDefaultBuilder(args) + + .ConfigureAppConfiguration((hostingContext, webBuilder) => + { + webBuilder + .AddApollo(webBuilder.Build().GetSection("apollo")) + .AddDefault(); + }) + .ConfigureServices(services => services.AddAutofac()) + .UseContentRoot(Directory.GetCurrentDirectory()) + .UseStartup() + .Build(); + } +} \ No newline at end of file diff --git a/WorkData/WorkData.ApolloWeb/Properties/launchSettings.json b/WorkData/WorkData.ApolloWeb/Properties/launchSettings.json new file mode 100644 index 0000000..2dc0956 --- /dev/null +++ b/WorkData/WorkData.ApolloWeb/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:55504", + "sslPort": 0 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Production" + } + }, + "WorkData.ApolloWeb": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "http://localhost:5000" + } + } +} \ No newline at end of file diff --git a/WorkData/WorkData.ApolloWeb/Startup.cs b/WorkData/WorkData.ApolloWeb/Startup.cs new file mode 100644 index 0000000..80bc252 --- /dev/null +++ b/WorkData/WorkData.ApolloWeb/Startup.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Security.Principal; +using System.Threading.Tasks; +using Autofac.Extensions.DependencyInjection; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Configuration; +using Com.Ctrip.Framework.Apollo; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using WorkData.Code.JwtSecurityTokens; +using WorkData.BaseWeb; + +namespace WorkData.ApolloWeb +{ + public class Startup:BaseStartup + { + public Startup(IHostingEnvironment env, IConfiguration configuration) : base(env, configuration) + { + } + + public IServiceProvider ConfigureServices(IServiceCollection services) + { + //services.Configure(Configuration.GetSection("WorkDataBaseJwt")); + services.AddMvc(); + #region Autofac + BootstrapWarpper.InitiateConfig(new List { "Config/moduleConfig.json" }, services); + #endregion + return new AutofacServiceProvider + (BootstrapWarpper.IocManager.IocContainer); + } + + + public void Configure(IApplicationBuilder app, IHostingEnvironment env) + { + if (env.IsDevelopment()) app.UseDeveloperExceptionPage(); + //静态资源 + app.UseStaticFiles(); + //MVC + app.UseMvc(routes => + { + routes.MapRoute( + "default", + "{controller=Home}/{action=Index}/{id?}"); + }); + } + } +} diff --git a/WorkData/WorkData.ApolloWeb/WorkData.ApolloWeb.csproj b/WorkData/WorkData.ApolloWeb/WorkData.ApolloWeb.csproj new file mode 100644 index 0000000..46b97bd --- /dev/null +++ b/WorkData/WorkData.ApolloWeb/WorkData.ApolloWeb.csproj @@ -0,0 +1,43 @@ + + + + netcoreapp2.1 + + + + + + + + + + + + + + + + + + + + + + + Always + + + Always + + + Always + + + Always + + + Always + + + + diff --git a/WorkData/WorkData.ApolloWeb/WorkDataApolloWebModule.cs b/WorkData/WorkData.ApolloWeb/WorkDataApolloWebModule.cs new file mode 100644 index 0000000..a6e5b94 --- /dev/null +++ b/WorkData/WorkData.ApolloWeb/WorkDataApolloWebModule.cs @@ -0,0 +1,25 @@ +// ------------------------------------------------------------------------------ +// Copyright 吴来伟个人 版权所有。 +// 项目名:WorkData.Web +// 文件名:WorkDataWebModule.cs +// 创建标识:吴来伟 2018-06-11 10:40 +// 创建描述: +// +// 修改标识:吴来伟2018-06-11 10:40 +// 修改描述: +// ------------------------------------------------------------------------------ + +using Autofac; +using Microsoft.AspNetCore.Identity; +using WorkData.Extensions.Modules; + +namespace WorkData.ApolloWeb +{ + public class WorkDataApolloWebModule : WorkDataBaseModule + { + protected override void Load(ContainerBuilder builder) + { + + } + } +} \ No newline at end of file diff --git a/WorkData/WorkData.ApolloWeb/appsettings.Development.json b/WorkData/WorkData.ApolloWeb/appsettings.Development.json new file mode 100644 index 0000000..fc64a00 --- /dev/null +++ b/WorkData/WorkData.ApolloWeb/appsettings.Development.json @@ -0,0 +1,7 @@ +{ + "apollo": { + "AppId": "workdata", + "Env": "dev", + "MetaServer": "http://127.0.0.1:31001" + } +} \ No newline at end of file diff --git a/WorkData/WorkData.ApolloWeb/appsettings.Production.json b/WorkData/WorkData.ApolloWeb/appsettings.Production.json new file mode 100644 index 0000000..9027bab --- /dev/null +++ b/WorkData/WorkData.ApolloWeb/appsettings.Production.json @@ -0,0 +1,7 @@ +{ + "apollo": { + "AppId": "workdata", + "Env": "pro", + "MetaServer": "http://127.0.0.1:31001" + } +} \ No newline at end of file diff --git a/WorkData/WorkData.ApolloWeb/appsettings.json b/WorkData/WorkData.ApolloWeb/appsettings.json new file mode 100644 index 0000000..fc64a00 --- /dev/null +++ b/WorkData/WorkData.ApolloWeb/appsettings.json @@ -0,0 +1,7 @@ +{ + "apollo": { + "AppId": "workdata", + "Env": "dev", + "MetaServer": "http://127.0.0.1:31001" + } +} \ No newline at end of file diff --git a/WorkData/WorkData.AutofacServiceLocator/AutofacServiceLocator.cs b/WorkData/WorkData.AutofacServiceLocator/AutofacServiceLocator.cs new file mode 100644 index 0000000..abac0ad --- /dev/null +++ b/WorkData/WorkData.AutofacServiceLocator/AutofacServiceLocator.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using Autofac; +using CommonServiceLocator; + +namespace WorkData.AutofacServiceLocator +{ + /// + /// Autofac implementation of the Microsoft CommonServiceLocator. + /// + public class AutofacServiceLocator : ServiceLocatorImplBase + { + /// + /// The from which services + /// should be located. + /// + private readonly IComponentContext _container; + + /// + /// Initializes a new instance of the class. + /// + /// + /// The from which services + /// should be located. + /// + /// + /// Thrown if is . + /// + public AutofacServiceLocator(IComponentContext container) + { + _container = container ?? throw new ArgumentNullException(nameof(container)); + } + + /// + /// Resolves the requested service instance. + /// + /// Type of instance requested. + /// Name of registered service you want. May be . + /// The requested service instance. + /// + /// Thrown if is . + /// + protected override object DoGetInstance(Type serviceType, string key) + { + if (serviceType == null) + { + throw new ArgumentNullException(nameof(serviceType)); + } + + return key != null ? _container.ResolveNamed(key, serviceType) : _container.Resolve(serviceType); + } + + /// + /// Resolves all requested service instances. + /// + /// Type of instance requested. + /// Sequence of service instance objects. + /// + /// Thrown if is . + /// + protected override IEnumerable DoGetAllInstances(Type serviceType) + { + if (serviceType == null) + { + throw new ArgumentNullException(nameof(serviceType)); + } + + var enumerableType = typeof(IEnumerable<>).MakeGenericType(serviceType); + + var instance = _container.Resolve(enumerableType); + return ((IEnumerable)instance).Cast(); + } + } +} \ No newline at end of file diff --git a/WorkData/WorkData.AutofacServiceLocator/Program.cs b/WorkData/WorkData.AutofacServiceLocator/Program.cs new file mode 100644 index 0000000..fe241d8 --- /dev/null +++ b/WorkData/WorkData.AutofacServiceLocator/Program.cs @@ -0,0 +1,33 @@ +using Autofac; +using CommonServiceLocator; +using System; +using System.Collections.Generic; + +namespace WorkData.AutofacServiceLocator +{ + class Program + { + private static IServiceLocator _locator; + static void Main(string[] args) + { + var builder = new ContainerBuilder(); + + builder + .RegisterType() + .Named(typeof(SimpleLogger).FullName) + .SingleInstance() + .As(); + + + var container = builder.Build(); + + _locator = new AutofacServiceLocator(container); + + for (int i = 0; i < 10000000; i++) + { + var log = _locator.GetInstance(); + log.Get(); + } + } + } +} diff --git a/WorkData/WorkData.AutofacServiceLocator/SimpleLogger.cs b/WorkData/WorkData.AutofacServiceLocator/SimpleLogger.cs new file mode 100644 index 0000000..7f8d5d4 --- /dev/null +++ b/WorkData/WorkData.AutofacServiceLocator/SimpleLogger.cs @@ -0,0 +1,28 @@ +using System; + +namespace WorkData.AutofacServiceLocator +{ + public interface ILogger + { + string Get(); + } + + public class SimpleLogger : ILogger + { + public string A { get; set; } + + public string B { get; set; } + + public string C { get; set; } + + public string Get() + { + var sp = "123"; + for (int i = 0; i < 1000; i++) + { + sp += i; + } + return Guid.NewGuid().ToString()+ sp; + } + } +} \ No newline at end of file diff --git a/WorkData/WorkData.AutofacServiceLocator/WorkData.AutofacServiceLocator.csproj b/WorkData/WorkData.AutofacServiceLocator/WorkData.AutofacServiceLocator.csproj new file mode 100644 index 0000000..e81dcb5 --- /dev/null +++ b/WorkData/WorkData.AutofacServiceLocator/WorkData.AutofacServiceLocator.csproj @@ -0,0 +1,13 @@ + + + + Exe + netcoreapp2.2 + + + + + + + + diff --git a/WorkData/WorkData.BaseWeb/BaseStartup.cs b/WorkData/WorkData.BaseWeb/BaseStartup.cs new file mode 100644 index 0000000..c2e23d0 --- /dev/null +++ b/WorkData/WorkData.BaseWeb/BaseStartup.cs @@ -0,0 +1,17 @@ +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; + +namespace WorkData.BaseWeb +{ + public class BaseStartup + { + public static Bootstrap BootstrapWarpper { get; } = Bootstrap.Instance(); + + public IConfiguration Configuration { get; set; } + + public BaseStartup(IHostingEnvironment env, IConfiguration configuration) + { + Configuration = configuration; + } + } +} \ No newline at end of file diff --git a/WorkData/WorkData.BaseWeb/Extension/ActionExecutingContextExtension.cs b/WorkData/WorkData.BaseWeb/Extension/ActionExecutingContextExtension.cs new file mode 100644 index 0000000..e8fd2f5 --- /dev/null +++ b/WorkData/WorkData.BaseWeb/Extension/ActionExecutingContextExtension.cs @@ -0,0 +1,16 @@ +using Microsoft.AspNetCore.Mvc.Controllers; +using Microsoft.AspNetCore.Mvc.Filters; +using System; +using System.Reflection; + +namespace WorkData.BaseWeb.Extension +{ + public static class ActionExecutingContextExtension + { + public static T TypeOfAttributeEntity(this ActionExecutingContext context) where T : Attribute + { + return (context?.ActionDescriptor as ControllerActionDescriptor)?.MethodInfo + .GetCustomAttribute(); + } + } +} \ No newline at end of file diff --git a/WorkData/WorkData.BaseWeb/Extension/ConfigurationBinderExtension.cs b/WorkData/WorkData.BaseWeb/Extension/ConfigurationBinderExtension.cs new file mode 100644 index 0000000..a868ebe --- /dev/null +++ b/WorkData/WorkData.BaseWeb/Extension/ConfigurationBinderExtension.cs @@ -0,0 +1,16 @@ +using Microsoft.Extensions.Configuration; +using Newtonsoft.Json; + +namespace WorkData.BaseWeb.Extension +{ + public static class ConfigurationBinderExtension + { + public static T GetWorkDataValue(this IConfiguration configuration, string key) + { + var data = configuration.GetValue("version"); + return JsonConvert.DeserializeObject(data); + } + + + } +} diff --git a/WorkData/WorkData.BaseWeb/Extension/ServiceCollectionExtension.cs b/WorkData/WorkData.BaseWeb/Extension/ServiceCollectionExtension.cs new file mode 100644 index 0000000..4e6dd21 --- /dev/null +++ b/WorkData/WorkData.BaseWeb/Extension/ServiceCollectionExtension.cs @@ -0,0 +1,49 @@ +using Microsoft.AspNetCore.Authentication; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.IdentityModel.Tokens; +using System; +using System.Text; +using WorkData.Code.JwtSecurityTokens; +using WorkData.Extensions.ServiceCollections; + +namespace WorkData.BaseWeb.Extension +{ + public static class ServiceCollectionExtension + { + public static AuthenticationBuilder AddWorkDataJwt(this IServiceCollection services) + { + var workDataBaseJwt = services.ResolveServiceValue(); + if (services == null) + throw new ArgumentNullException(nameof(services)); + var authenticationBuilder = services.AddAuthentication(); + + services.AddAuthentication(options => + { + //认证middleware配置 + options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; + options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; + }); + + authenticationBuilder.AddJwtBearer(o => + { + //主要是jwt token参数设置 + o.TokenValidationParameters = new TokenValidationParameters + { + //Token颁发机构 + ValidIssuer = workDataBaseJwt.Issuer, + //颁发给谁 + ValidAudience = workDataBaseJwt.Audience, + //这里的key要进行加密,需要引用Microsoft.IdentityModel.Tokens + IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(workDataBaseJwt.SecretKey)), + //ValidateIssuerSigningKey=true, + ////是否验证Token有效期,使用当前时间与Token的Claims中的NotBefore和Expires对比 + ValidateLifetime = true, + ////允许的服务器时间偏移量 + ClockSkew = TimeSpan.Zero + }; + }); + return authenticationBuilder; + } + } +} \ No newline at end of file diff --git a/WorkData/WorkData.BaseWeb/Filters/WebUowFilter.cs b/WorkData/WorkData.BaseWeb/Filters/WebUowFilter.cs new file mode 100644 index 0000000..3220ef8 --- /dev/null +++ b/WorkData/WorkData.BaseWeb/Filters/WebUowFilter.cs @@ -0,0 +1,39 @@ +using Microsoft.AspNetCore.Mvc.Filters; +using WorkData.BaseWeb.Extension; +using WorkData.Code.UnitOfWorks; + +namespace WorkData.BaseWeb.Filters +{ + public class WebUowFilter : IActionFilter + { + private readonly IUnitOfWorkManager _unitOfWorkManager; + + public WebUowFilter(IUnitOfWorkManager unitOfWorkManager) + { + _unitOfWorkManager = unitOfWorkManager; + } + + public IUnitOfWorkCompleteHandle UnitOfWorkCompleteHandle { get; set; } + + /// + /// OnActionExecuting + /// + /// + public void OnActionExecuting(ActionExecutingContext context) + { + var unitOfWorkAttribute = context.TypeOfAttributeEntity(); + if (unitOfWorkAttribute != null && unitOfWorkAttribute.IsDisabled) + return; + UnitOfWorkCompleteHandle = _unitOfWorkManager.Begin(); + } + + /// + /// OnActionExecuted + /// + /// + public void OnActionExecuted(ActionExecutedContext context) + { + UnitOfWorkCompleteHandle?.Complate(); + } + } +} \ No newline at end of file diff --git a/WorkData/WorkData.BaseWeb/Filters/WorkDataExpectionFilter.cs b/WorkData/WorkData.BaseWeb/Filters/WorkDataExpectionFilter.cs new file mode 100644 index 0000000..bae6c2e --- /dev/null +++ b/WorkData/WorkData.BaseWeb/Filters/WorkDataExpectionFilter.cs @@ -0,0 +1,34 @@ +#region + +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Controllers; +using Microsoft.AspNetCore.Mvc.Filters; +using WorkData.Code.ResponseExtensions; +using WorkData.Util.Common.ExceptionExtensions; + +#endregion + +namespace WorkData.BaseWeb.Filters +{ + /// + /// WorkDataExpectionFilter + /// + public class WorkDataExpectionFilter : IExceptionFilter + { + public void OnException(ExceptionContext context) + { + if (!(context.ActionDescriptor is ControllerActionDescriptor)) + { + return; + } + + if (!(context.Exception is UserFriendlyException)) + return; + var serverResponse = ResponseProvider.Error(default(BaseResponseEmpty), context.Exception.Message); + + context.Result = new BadRequestObjectResult(serverResponse); + + context.Exception = null; + } + } +} \ No newline at end of file diff --git a/WorkData/WorkData.BaseWeb/Infrastructure/WorkDataBaseApiController.cs b/WorkData/WorkData.BaseWeb/Infrastructure/WorkDataBaseApiController.cs new file mode 100644 index 0000000..f779491 --- /dev/null +++ b/WorkData/WorkData.BaseWeb/Infrastructure/WorkDataBaseApiController.cs @@ -0,0 +1,48 @@ +#region + +using Microsoft.AspNetCore.Mvc; +using WorkData.Code.ResponseExtensions; + +#endregion + +namespace WorkData.BaseWeb.Infrastructure +{ + public abstract class WorkDataBaseApiController : WorkDataBaseController + { + /// + /// AsSuccess + /// + /// + /// + /// + public virtual IActionResult AsSuccessJson(T data) + { + var serverResponse = ResponseProvider.Success(data); + return Ok(serverResponse); + } + + /// + /// AsError + /// + /// + /// + /// + /// + public virtual IActionResult AsErrorJson(T data, string message) + { + var serverResponse = ResponseProvider.Error(data, message); + return Ok(serverResponse); + } + + /// + /// AsError + /// + /// + /// + public virtual IActionResult AsErrorJson(string message) + { + var serverResponse = ResponseProvider.Error(default(BaseResponseEmpty), message); + return Ok(serverResponse); + } + } +} \ No newline at end of file diff --git a/WorkData/WorkData.BaseWeb/Infrastructure/WorkDataBaseController.cs b/WorkData/WorkData.BaseWeb/Infrastructure/WorkDataBaseController.cs new file mode 100644 index 0000000..2edde36 --- /dev/null +++ b/WorkData/WorkData.BaseWeb/Infrastructure/WorkDataBaseController.cs @@ -0,0 +1,18 @@ +#region + +using Microsoft.AspNetCore.Mvc; +using System.Security.Claims; +using System.Security.Principal; +using WorkData.Code.Sessions; +using WorkData.Dependency; + +#endregion + +namespace WorkData.BaseWeb.Infrastructure +{ + public abstract class WorkDataBaseController : Controller + { + public virtual IWorkDataSession WorkDataSession { get; set; } + public virtual ClaimsPrincipal ClaimsPrincipal { get; set; } + } +} \ No newline at end of file diff --git a/WorkData/WorkData.BaseWeb/WorkData.BaseWeb.csproj b/WorkData/WorkData.BaseWeb/WorkData.BaseWeb.csproj new file mode 100644 index 0000000..b92e182 --- /dev/null +++ b/WorkData/WorkData.BaseWeb/WorkData.BaseWeb.csproj @@ -0,0 +1,15 @@ + + + + netstandard2.0 + + + + + + + + + + + diff --git a/WorkData/WorkData.Code/AutoMappers/AutoMapperConfiguration.cs b/WorkData/WorkData.Code/AutoMappers/AutoMapperConfiguration.cs index 7a412b2..8c53b85 100644 --- a/WorkData/WorkData.Code/AutoMappers/AutoMapperConfiguration.cs +++ b/WorkData/WorkData.Code/AutoMappers/AutoMapperConfiguration.cs @@ -17,6 +17,5 @@ public static IMapperConfigurationExpression AddMapping( } return configurationExpression; } - } -} +} \ No newline at end of file diff --git a/WorkData/WorkData.Code/AutoMappers/AutoMapperExtension.cs b/WorkData/WorkData.Code/AutoMappers/AutoMapperExtension.cs index 166ddec..a245b12 100644 --- a/WorkData/WorkData.Code/AutoMappers/AutoMapperExtension.cs +++ b/WorkData/WorkData.Code/AutoMappers/AutoMapperExtension.cs @@ -6,7 +6,7 @@ namespace WorkData.Code.AutoMappers { public static class AutoMapperExtension { - public static IMapper Mapper => IocManager.Instance.Resolve(); + public static IMapper Mapper => IocManager.ServiceLocatorCurrent.GetInstance(); /// /// AddWorkDataAutoMapper diff --git a/WorkData/WorkData.Code/AutoMappers/WorkDataBaseProfile.cs b/WorkData/WorkData.Code/AutoMappers/WorkDataBaseProfile.cs index f619d36..3080083 100644 --- a/WorkData/WorkData.Code/AutoMappers/WorkDataBaseProfile.cs +++ b/WorkData/WorkData.Code/AutoMappers/WorkDataBaseProfile.cs @@ -2,7 +2,7 @@ namespace WorkData.Code.AutoMappers { - public class WorkDataBaseProfile : Profile + public class WorkDataBaseProfile : Profile { } } \ No newline at end of file diff --git a/WorkData/WorkData.Code/Domain/WorkDataBaseManage.cs b/WorkData/WorkData.Code/Domain/WorkDataBaseManage.cs index 73acadc..cb153a7 100644 --- a/WorkData/WorkData.Code/Domain/WorkDataBaseManage.cs +++ b/WorkData/WorkData.Code/Domain/WorkDataBaseManage.cs @@ -5,7 +5,7 @@ namespace WorkData.Code.Domain { - public class WorkDataBaseManage: IWorkDataBaseManage + public class WorkDataBaseManage : IWorkDataBaseManage { /// /// WorkDataSession @@ -19,8 +19,8 @@ public class WorkDataBaseManage: IWorkDataBaseManage public WorkDataBaseManage() { - WorkDataSession = IocManager.Instance.Resolve(); - ClaimsPrincipal = IocManager.Instance.Resolve() as ClaimsPrincipal; + WorkDataSession = IocManager.ServiceLocatorCurrent.GetInstance(); + ClaimsPrincipal = IocManager.ServiceLocatorCurrent.GetInstance() as ClaimsPrincipal; } } } \ No newline at end of file diff --git a/WorkData/WorkData.Code/Helpers/EntityHelper.cs b/WorkData/WorkData.Code/Entities/EntityHelper.cs similarity index 95% rename from WorkData/WorkData.Code/Helpers/EntityHelper.cs rename to WorkData/WorkData.Code/Entities/EntityHelper.cs index 97958e7..3079f07 100644 --- a/WorkData/WorkData.Code/Helpers/EntityHelper.cs +++ b/WorkData/WorkData.Code/Entities/EntityHelper.cs @@ -13,11 +13,11 @@ using System; using System.Reflection; -using WorkData.Code.Entities; +using WorkData.Util.Common.Helpers; #endregion -namespace WorkData.Code.Helpers +namespace WorkData.Code.Entities { public class EntityHelper { diff --git a/WorkData/WorkData.Code/Extensions/StringExtension.cs b/WorkData/WorkData.Code/Extensions/StringExtension.cs deleted file mode 100644 index a500e5e..0000000 --- a/WorkData/WorkData.Code/Extensions/StringExtension.cs +++ /dev/null @@ -1,45 +0,0 @@ -// ------------------------------------------------------------------------------ -// Copyright 吴来伟个人 版权所有。 -// 项目名:WorkData.Code -// 文件名:StringExtension.cs -// 创建标识:吴来伟 2018-01-30 9:17 -// 创建描述: -// -// 修改标识:吴来伟2018-01-30 9:17 -// 修改描述: -// ------------------------------------------------------------------------------ - -using System; -using System.Text; - -namespace WorkData.Code.Extensions -{ - /// - /// StringExtension - /// - public static class StringExtension - { - /// - /// Base 64 Encoding with URL and Filename Safe Alphabet using UTF-8 character set. - /// - ///The origianl string - ///The Base64 encoded string - public static string Base64ForUrlEncode(this string str) - { - byte[] c = Convert.FromBase64String(str); - return Encoding.Default.GetString(c); - } - - /// - /// Decode Base64 encoded string with URL and Filename Safe Alphabet using UTF-8. - /// - ///Base64 code - ///The decoded string. - public static string Base64ForUrlDecode(this string str) - { - var b = Encoding.Default.GetBytes(str); - //转成 Base64 形式的 System.String - return Convert.ToBase64String(b); - } - } -} \ No newline at end of file diff --git a/WorkData/WorkData.Code/Repositories/BaseRepository.cs b/WorkData/WorkData.Code/Repositories/BaseRepository.cs index bf4e6da..b982e0f 100644 --- a/WorkData/WorkData.Code/Repositories/BaseRepository.cs +++ b/WorkData/WorkData.Code/Repositories/BaseRepository.cs @@ -16,7 +16,6 @@ using WorkData.Code.Entities; using WorkData.Code.Repositories.Predicates; using WorkData.Code.UnitOfWorks; -using WorkData.Dependency; #endregion @@ -35,11 +34,6 @@ public abstract class BaseRepository : /// public IUnitOfWorkManager UnitOfWorkManager { get; set; } - /// - /// IocResolver - /// - public IResolver IocResolver { get; set; } - /// /// PredicateGroup /// diff --git a/WorkData/WorkData.Code/Repositories/IBaseRepository.cs b/WorkData/WorkData.Code/Repositories/IBaseRepository.cs index 293fc82..1025643 100644 --- a/WorkData/WorkData.Code/Repositories/IBaseRepository.cs +++ b/WorkData/WorkData.Code/Repositories/IBaseRepository.cs @@ -109,7 +109,6 @@ public interface IBaseRepository /// TEntity AsNoFilterFindBy(TPrimaryKey primaryKey, string[] includeNames); - /// /// FindBy /// diff --git a/WorkData/WorkData.Code/Repositories/Predicates/IPredicateGroup.cs b/WorkData/WorkData.Code/Repositories/Predicates/IPredicateGroup.cs index 548a25e..ff66114 100644 --- a/WorkData/WorkData.Code/Repositories/Predicates/IPredicateGroup.cs +++ b/WorkData/WorkData.Code/Repositories/Predicates/IPredicateGroup.cs @@ -8,6 +8,6 @@ public interface IPredicateGroup where T : class { List> Predicates { get; set; } - void AddPredicate(bool condition, Expression> expression); + void AddPredicate(bool condition, Expression> expression); } } \ No newline at end of file diff --git a/WorkData/WorkData.Code/Repositories/Predicates/PredicateGroup.cs b/WorkData/WorkData.Code/Repositories/Predicates/PredicateGroup.cs index f76492b..8e31baf 100644 --- a/WorkData/WorkData.Code/Repositories/Predicates/PredicateGroup.cs +++ b/WorkData/WorkData.Code/Repositories/Predicates/PredicateGroup.cs @@ -1,8 +1,6 @@ using System; using System.Collections.Generic; using System.Linq.Expressions; -using System.Text; -using Microsoft.AspNetCore.Mvc.ViewFeatures.Internal; namespace WorkData.Code.Repositories.Predicates { @@ -40,4 +38,4 @@ public void AddPredicate(bool condition, Expression> expression) Predicates.Add(predicate); } } -} +} \ No newline at end of file diff --git a/WorkData/WorkData.Code/ResponseExtensions/BaseResponseEmpty.cs b/WorkData/WorkData.Code/ResponseExtensions/BaseResponseEmpty.cs index e8f9d59..f9533df 100644 --- a/WorkData/WorkData.Code/ResponseExtensions/BaseResponseEmpty.cs +++ b/WorkData/WorkData.Code/ResponseExtensions/BaseResponseEmpty.cs @@ -1,13 +1,4 @@ -// ------------------------------------------------------------------------------ -// Copyright 吴来伟个人 版权所有。 -// 项目名:WorkData.Util.Common -// 文件名:BaseResponseEmpty.cs -// 创建标识:吴来伟 2018-04-02 14:51 -// 创建描述: -// -// 修改标识:吴来伟2018-04-02 14:51 -// 修改描述: -// ------------------------------------------------------------------------------ + namespace WorkData.Code.ResponseExtensions { public class BaseResponseEmpty diff --git a/WorkData/WorkData.Code/ResponseExtensions/ResponseProvider.cs b/WorkData/WorkData.Code/ResponseExtensions/ResponseProvider.cs index b4a089e..b7f6d85 100644 --- a/WorkData/WorkData.Code/ResponseExtensions/ResponseProvider.cs +++ b/WorkData/WorkData.Code/ResponseExtensions/ResponseProvider.cs @@ -1,18 +1,4 @@ -// ------------------------------------------------------------------------------ -// Copyright 吴来伟个人 版权所有。 -// 项目名:WorkData.Util.Common -// 文件名:ResponseProvider.cs -// 创建标识:吴来伟 2018-03-28 11:25 -// 创建描述: -// -// 修改标识:吴来伟2018-03-28 11:25 -// 修改描述: -// ------------------------------------------------------------------------------ - -#region - -#endregion - + #region #endregion diff --git a/WorkData/WorkData.Code/ResponseExtensions/ServerResponse.cs b/WorkData/WorkData.Code/ResponseExtensions/ServerResponse.cs index 2deeb73..7430fe5 100644 --- a/WorkData/WorkData.Code/ResponseExtensions/ServerResponse.cs +++ b/WorkData/WorkData.Code/ResponseExtensions/ServerResponse.cs @@ -1,14 +1,4 @@ -// ------------------------------------------------------------------------------ -// Copyright 吴来伟个人 版权所有。 -// 项目名:WorkData.Util.Common -// 文件名:ServerResponse.cs -// 创建标识:吴来伟 2018-03-28 11:25 -// 创建描述: -// -// 修改标识:吴来伟2018-03-28 11:25 -// 修改描述: -// ------------------------------------------------------------------------------ - + #region using Newtonsoft.Json; diff --git a/WorkData/WorkData.Code/Service/WorkDataBaseService.cs b/WorkData/WorkData.Code/Service/WorkDataBaseService.cs index efb5995..64ccdda 100644 --- a/WorkData/WorkData.Code/Service/WorkDataBaseService.cs +++ b/WorkData/WorkData.Code/Service/WorkDataBaseService.cs @@ -19,8 +19,8 @@ public class WorkDataBaseService public WorkDataBaseService() { - WorkDataSession = IocManager.Instance.Resolve(); - ClaimsPrincipal = IocManager.Instance.Resolve() as ClaimsPrincipal; + WorkDataSession = IocManager.ServiceLocatorCurrent.GetInstance(); + ClaimsPrincipal = IocManager.ServiceLocatorCurrent.GetInstance() as ClaimsPrincipal; } } } \ No newline at end of file diff --git a/WorkData/WorkData.Code/Sessions/ClaimsSession.cs b/WorkData/WorkData.Code/Sessions/ClaimsSession.cs index 43375b9..1ef8b3a 100644 --- a/WorkData/WorkData.Code/Sessions/ClaimsSession.cs +++ b/WorkData/WorkData.Code/Sessions/ClaimsSession.cs @@ -35,6 +35,5 @@ public ClaimsSession(IPrincipal principal) /// UserId /// public override string UserId => Principal.GetClaimValue(WorkDataClaimsType.UserId); - } } \ No newline at end of file diff --git a/WorkData/WorkData.Code/UnitOfWorks/UnitOfWorkInterceptor.cs b/WorkData/WorkData.Code/UnitOfWorks/UnitOfWorkInterceptor.cs index d88aea2..694f01f 100644 --- a/WorkData/WorkData.Code/UnitOfWorks/UnitOfWorkInterceptor.cs +++ b/WorkData/WorkData.Code/UnitOfWorks/UnitOfWorkInterceptor.cs @@ -10,12 +10,12 @@ // ------------------------------------------------------------------------------ using Castle.DynamicProxy; -using WorkData.Code.Helpers; +using WorkData.Util.Common.Helpers; namespace WorkData.Code.UnitOfWorks { /// - /// 自动工作单元(AOP) + /// 自动工作单元(AOP) /// public class UnitOfWorkInterceptor : IInterceptor { @@ -27,23 +27,19 @@ public UnitOfWorkInterceptor(IUnitOfWorkManager unitOfWorkManager) } /// - /// Intercept + /// Intercept /// /// public void Intercept(IInvocation invocation) { if (AsyncHelper.IsAsyncMethod(invocation.Method)) - { PerformUowAsync(invocation); - } else - { PerformUow(invocation); - } } /// - /// PerformUow + /// PerformUow /// /// private void PerformUow(IInvocation invocation) @@ -56,7 +52,7 @@ private void PerformUow(IInvocation invocation) } /// - /// PerformUow + /// PerformUow /// /// private void PerformUowAsync(IInvocation invocation) diff --git a/WorkData/WorkData.Code/UnitOfWorks/UnitOfWorkManager.cs b/WorkData/WorkData.Code/UnitOfWorks/UnitOfWorkManager.cs index 57fa7a6..04c2bd9 100644 --- a/WorkData/WorkData.Code/UnitOfWorks/UnitOfWorkManager.cs +++ b/WorkData/WorkData.Code/UnitOfWorks/UnitOfWorkManager.cs @@ -16,12 +16,10 @@ namespace WorkData.Code.UnitOfWorks public class UnitOfWorkManager : IUnitOfWorkManager { private readonly ICurrentUnitOfWorkProvider _currentUnitOfWorkProvider; - private readonly IResolver _resolver; - public UnitOfWorkManager(ICurrentUnitOfWorkProvider currentUnitOfWorkProvider, IResolver resolver) + public UnitOfWorkManager(ICurrentUnitOfWorkProvider currentUnitOfWorkProvider) { _currentUnitOfWorkProvider = currentUnitOfWorkProvider; - _resolver = resolver; } /// @@ -35,7 +33,7 @@ public UnitOfWorkManager(ICurrentUnitOfWorkProvider currentUnitOfWorkProvider, I /// public IUnitOfWorkCompleteHandle Begin() { - var unitOfWork = _resolver.Resolve(); + var unitOfWork = IocManager.ServiceLocatorCurrent.GetInstance(); //开启事务 unitOfWork.Begin(); //设置定位 diff --git a/WorkData/WorkData.Code/Webs/Infrastructure/WorkDataBaseController.cs b/WorkData/WorkData.Code/Webs/Infrastructure/WorkDataBaseController.cs index cae0c58..4656994 100644 --- a/WorkData/WorkData.Code/Webs/Infrastructure/WorkDataBaseController.cs +++ b/WorkData/WorkData.Code/Webs/Infrastructure/WorkDataBaseController.cs @@ -16,13 +16,13 @@ public class WorkDataBaseController : Controller /// WorkDataSession /// s public IWorkDataSession WorkDataSession { get; set; } = - IocManager.Instance.Resolve(); + IocManager.ServiceLocatorCurrent.GetInstance(); /// /// ClaimsPrincipal /// s public ClaimsPrincipal ClaimsPrincipal { get; set; } = - IocManager.Instance.Resolve() as ClaimsPrincipal; + IocManager.ServiceLocatorCurrent.GetInstance() as ClaimsPrincipal; } } \ No newline at end of file diff --git a/WorkData/WorkData.Code/WorkData.Code.csproj b/WorkData/WorkData.Code/WorkData.Code.csproj index ee59658..3528c9f 100644 --- a/WorkData/WorkData.Code/WorkData.Code.csproj +++ b/WorkData/WorkData.Code/WorkData.Code.csproj @@ -4,6 +4,18 @@ netstandard2.0 + + + + + + + + + + + + @@ -26,8 +38,4 @@ - - - - diff --git a/WorkData/WorkData.Domain.EntityFramework/DomainEntityFrameworkModule.cs b/WorkData/WorkData.Domain.EntityFramework/DomainEntityFrameworkModule.cs index 22a1a0e..fba0817 100644 --- a/WorkData/WorkData.Domain.EntityFramework/DomainEntityFrameworkModule.cs +++ b/WorkData/WorkData.Domain.EntityFramework/DomainEntityFrameworkModule.cs @@ -11,10 +11,10 @@ #region -using System.Security.Claims; -using System.Security.Principal; using Autofac; using Microsoft.EntityFrameworkCore; +using System.Security.Claims; +using System.Security.Principal; using WorkData.Code.Sessions; using WorkData.Domain.EntityFramework.EntityFramework.Contexts; using WorkData.Domain.EntityFramework.EntityFramework.Sessions; diff --git a/WorkData/WorkData.Domain.EntityFramework/EntityFramework/Contexts/WorkDataContext.cs b/WorkData/WorkData.Domain.EntityFramework/EntityFramework/Contexts/WorkDataContext.cs index 8a81891..2824230 100644 --- a/WorkData/WorkData.Domain.EntityFramework/EntityFramework/Contexts/WorkDataContext.cs +++ b/WorkData/WorkData.Domain.EntityFramework/EntityFramework/Contexts/WorkDataContext.cs @@ -11,11 +11,7 @@ #region -using System.Linq; using Microsoft.EntityFrameworkCore; -using WorkData.Code.Entities; -using WorkData.Code.Entities.BaseInterfaces; -using WorkData.Domain.EntityFramework.EntityFramework.Filters; using WorkData.Domain.EntityFramework.Mappings.Permissions; using WorkData.Domain.EntityFramework.Mappings.WeiXin; using WorkData.Domain.Permissions.Roles; @@ -24,7 +20,6 @@ using WorkData.Domain.WeiXin; using WorkData.EntityFramework; using WorkData.EntityFramework.Repositories.Filters; -using Z.EntityFramework.Plus; #endregion diff --git a/WorkData/WorkData.Domain.EntityFramework/EntityFramework/Filters/QueryFilterEnum.cs b/WorkData/WorkData.Domain.EntityFramework/EntityFramework/Filters/QueryFilterEnum.cs index 97fd764..7842866 100644 --- a/WorkData/WorkData.Domain.EntityFramework/EntityFramework/Filters/QueryFilterEnum.cs +++ b/WorkData/WorkData.Domain.EntityFramework/EntityFramework/Filters/QueryFilterEnum.cs @@ -3,6 +3,6 @@ public enum QueryFilterEnum { IsSoftDelete = 1, - Create=2 + Create = 2 } } \ No newline at end of file diff --git a/WorkData/WorkData.Domain.EntityFramework/Mappings/WeiXin/WeiXinShareMap.cs b/WorkData/WorkData.Domain.EntityFramework/Mappings/WeiXin/WeiXinShareMap.cs index a5a712e..f9b5500 100644 --- a/WorkData/WorkData.Domain.EntityFramework/Mappings/WeiXin/WeiXinShareMap.cs +++ b/WorkData/WorkData.Domain.EntityFramework/Mappings/WeiXin/WeiXinShareMap.cs @@ -1,10 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Text; -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; using WorkData.Domain.EntityFramework.EntityFramework.Extensions; -using WorkData.Domain.Permissions.Roles; using WorkData.Domain.WeiXin; namespace WorkData.Domain.EntityFramework.Mappings.WeiXin @@ -54,4 +50,4 @@ public void Configure(EntityTypeBuilder builder) builder.ToTable("WeiXinShare"); } } -} +} \ No newline at end of file diff --git a/WorkData/WorkData.Domain.EntityFramework/Mappings/WeiXin/WeiXinUserInfoMap.cs b/WorkData/WorkData.Domain.EntityFramework/Mappings/WeiXin/WeiXinUserInfoMap.cs index 29e49f0..c7397bc 100644 --- a/WorkData/WorkData.Domain.EntityFramework/Mappings/WeiXin/WeiXinUserInfoMap.cs +++ b/WorkData/WorkData.Domain.EntityFramework/Mappings/WeiXin/WeiXinUserInfoMap.cs @@ -1,10 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Text; -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; using WorkData.Domain.EntityFramework.EntityFramework.Extensions; -using WorkData.Domain.Permissions.Roles; using WorkData.Domain.WeiXin; namespace WorkData.Domain.EntityFramework.Mappings.WeiXin @@ -78,4 +74,4 @@ public void Configure(EntityTypeBuilder builder) builder.ToTable("WeiXinUserInfo"); } } -} +} \ No newline at end of file diff --git a/WorkData/WorkData.Domain.EntityFramework/Migrations/20180813085044_Init.cs b/WorkData/WorkData.Domain.EntityFramework/Migrations/20180813085044_Init.cs index 1be4714..9be125e 100644 --- a/WorkData/WorkData.Domain.EntityFramework/Migrations/20180813085044_Init.cs +++ b/WorkData/WorkData.Domain.EntityFramework/Migrations/20180813085044_Init.cs @@ -1,5 +1,5 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; +using System; namespace WorkData.Domain.EntityFramework.Migrations { @@ -123,4 +123,4 @@ protected override void Down(MigrationBuilder migrationBuilder) name: "BaseUser"); } } -} +} \ No newline at end of file diff --git a/WorkData/WorkData.Domain.EntityFramework/Migrations/20180820034301_InitWeiXin.cs b/WorkData/WorkData.Domain.EntityFramework/Migrations/20180820034301_InitWeiXin.cs index 6122b14..ac51b67 100644 --- a/WorkData/WorkData.Domain.EntityFramework/Migrations/20180820034301_InitWeiXin.cs +++ b/WorkData/WorkData.Domain.EntityFramework/Migrations/20180820034301_InitWeiXin.cs @@ -1,5 +1,5 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; +using System; namespace WorkData.Domain.EntityFramework.Migrations { @@ -31,4 +31,4 @@ protected override void Down(MigrationBuilder migrationBuilder) name: "WeiXinShare"); } } -} +} \ No newline at end of file diff --git a/WorkData/WorkData.Domain.EntityFramework/Migrations/20180820055148_InitWeiXinUpadte.cs b/WorkData/WorkData.Domain.EntityFramework/Migrations/20180820055148_InitWeiXinUpadte.cs index 95582eb..6be191a 100644 --- a/WorkData/WorkData.Domain.EntityFramework/Migrations/20180820055148_InitWeiXinUpadte.cs +++ b/WorkData/WorkData.Domain.EntityFramework/Migrations/20180820055148_InitWeiXinUpadte.cs @@ -1,5 +1,5 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; +using System; namespace WorkData.Domain.EntityFramework.Migrations { @@ -25,4 +25,4 @@ protected override void Down(MigrationBuilder migrationBuilder) oldType: "timestamp(0)"); } } -} +} \ No newline at end of file diff --git a/WorkData/WorkData.Domain.EntityFramework/Migrations/20180820062525_InitWeiXinUpdateIsRequire.cs b/WorkData/WorkData.Domain.EntityFramework/Migrations/20180820062525_InitWeiXinUpdateIsRequire.cs index 84b2b64..5fd10f9 100644 --- a/WorkData/WorkData.Domain.EntityFramework/Migrations/20180820062525_InitWeiXinUpdateIsRequire.cs +++ b/WorkData/WorkData.Domain.EntityFramework/Migrations/20180820062525_InitWeiXinUpdateIsRequire.cs @@ -58,4 +58,4 @@ protected override void Down(MigrationBuilder migrationBuilder) oldNullable: true); } } -} +} \ No newline at end of file diff --git a/WorkData/WorkData.Domain.EntityFramework/Migrations/20180821060617_INITWEIXINUSERINFO.cs b/WorkData/WorkData.Domain.EntityFramework/Migrations/20180821060617_INITWEIXINUSERINFO.cs index db1ed24..0edebcd 100644 --- a/WorkData/WorkData.Domain.EntityFramework/Migrations/20180821060617_INITWEIXINUSERINFO.cs +++ b/WorkData/WorkData.Domain.EntityFramework/Migrations/20180821060617_INITWEIXINUSERINFO.cs @@ -1,5 +1,5 @@ -using System; -using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Migrations; +using System; namespace WorkData.Domain.EntityFramework.Migrations { @@ -35,4 +35,4 @@ protected override void Down(MigrationBuilder migrationBuilder) name: "WeiXinUserInfo"); } } -} +} \ No newline at end of file diff --git a/WorkData/WorkData.Domain.EntityFramework/Migrations/SeedData.cs b/WorkData/WorkData.Domain.EntityFramework/Migrations/SeedData.cs index 9b4d38f..1c65c42 100644 --- a/WorkData/WorkData.Domain.EntityFramework/Migrations/SeedData.cs +++ b/WorkData/WorkData.Domain.EntityFramework/Migrations/SeedData.cs @@ -1,7 +1,7 @@ -using System; -using System.Collections.Generic; -using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore.Internal; +using System; +using System.Collections.Generic; using WorkData.Domain.EntityFramework.EntityFramework.Contexts; using WorkData.Domain.Permissions.Roles; using WorkData.Domain.Permissions.UserRoles; @@ -22,7 +22,7 @@ public static void Initialize(WorkDataContext context) { Id = Guid.NewGuid().ToString(), IsDelete = false, - UserName= "administrator", + UserName = "administrator", UserRoles = new List { new UserRole diff --git a/WorkData/WorkData.Domain/Permissions/Users/BaseUserManage.cs b/WorkData/WorkData.Domain/Permissions/Users/BaseUserManage.cs index a0f7751..69dc496 100644 --- a/WorkData/WorkData.Domain/Permissions/Users/BaseUserManage.cs +++ b/WorkData/WorkData.Domain/Permissions/Users/BaseUserManage.cs @@ -1,7 +1,5 @@ -using System.Security.Claims; -using WorkData.Code.Domain; +using WorkData.Code.Domain; using WorkData.Code.Repositories; -using WorkData.Code.Sessions; namespace WorkData.Domain.Permissions.Users { @@ -12,6 +10,7 @@ namespace WorkData.Domain.Permissions.Users public class BaseUserManage : WorkDataBaseManage { private readonly IBaseRepository _baseUserRepository; + public BaseUserManage(IBaseRepository baseUserRepository) { _baseUserRepository = baseUserRepository; diff --git a/WorkData/WorkData.Domain/WeiXin/WeiXinShare.cs b/WorkData/WorkData.Domain/WeiXin/WeiXinShare.cs index 8778f7f..3b661b0 100644 --- a/WorkData/WorkData.Domain/WeiXin/WeiXinShare.cs +++ b/WorkData/WorkData.Domain/WeiXin/WeiXinShare.cs @@ -9,7 +9,7 @@ namespace WorkData.Domain.WeiXin /// /// 微信分享逻辑 /// - public class WeiXinShare: ICreate, IAggregateRoot, IEntity + public class WeiXinShare : ICreate, IAggregateRoot, IEntity { /// /// Id @@ -45,7 +45,7 @@ public class WeiXinShare: ICreate, IAggregateRoot, IEntity /// /// 创建者Id /// - + public virtual string CreateUserId { get; set; } } } \ No newline at end of file diff --git a/WorkData/WorkData.Domain/WeiXin/WeiXinUserInfo.cs b/WorkData/WorkData.Domain/WeiXin/WeiXinUserInfo.cs index 0fc3bef..b5ed392 100644 --- a/WorkData/WorkData.Domain/WeiXin/WeiXinUserInfo.cs +++ b/WorkData/WorkData.Domain/WeiXin/WeiXinUserInfo.cs @@ -1,7 +1,5 @@ using System; -using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; -using System.Text; using WorkData.Code.Entities; using WorkData.Code.Entities.BaseInterfaces; using WorkData.Code.Repositories; @@ -66,6 +64,5 @@ public class WeiXinUserInfo : ICreate, IAggregateRoot, IEntity /// public virtual string CreateUserId { get; set; } - } -} +} \ No newline at end of file diff --git a/WorkData/WorkData.Domain/WorkDataDomainModule.cs b/WorkData/WorkData.Domain/WorkDataDomainModule.cs index e5db0ea..5837d45 100644 --- a/WorkData/WorkData.Domain/WorkDataDomainModule.cs +++ b/WorkData/WorkData.Domain/WorkDataDomainModule.cs @@ -1,10 +1,9 @@ #region +using Autofac; using System; using System.Linq; -using Autofac; using WorkData.Extensions.Modules; -using WorkData.Extensions.TypeFinders; #endregion @@ -22,7 +21,6 @@ protected override void Load(ContainerBuilder builder) builder.RegisterAssemblyTypes(assemblys.ToArray()) .Where(t => t.Name.EndsWith("Manage")) .AsSelf(); - } } } \ No newline at end of file diff --git a/WorkData/WorkData.ElasticSearch/Predicates.cs b/WorkData/WorkData.ElasticSearch/Predicates.cs index 9fb4c96..75a0409 100644 --- a/WorkData/WorkData.ElasticSearch/Predicates.cs +++ b/WorkData/WorkData.ElasticSearch/Predicates.cs @@ -343,6 +343,12 @@ public QueryContainer GetQuery(QueryContainer query) case GroupOperator.Or: return Predicates.Aggregate(query, (q, p) => q || p.GetQuery(query)); + case GroupOperator.NotAnd: + return Predicates.Aggregate(query, (q, p) => q && !p.GetQuery(query)); + + case GroupOperator.NotOr: + return Predicates.Aggregate(query, (q, p) => q || !p.GetQuery(query)); + default: throw new ElasticsearchException("构建Elasticsearch查询谓词异常"); } @@ -355,6 +361,8 @@ public QueryContainer GetQuery(QueryContainer query) public enum GroupOperator { And, - Or + Or, + NotAnd, + NotOr } } \ No newline at end of file diff --git a/WorkData/WorkData.ElasticSearch/Setting/ElasticSearchSource.cs b/WorkData/WorkData.ElasticSearch/Setting/ElasticSearchSource.cs index b53b6ed..27ef0b8 100644 --- a/WorkData/WorkData.ElasticSearch/Setting/ElasticSearchSource.cs +++ b/WorkData/WorkData.ElasticSearch/Setting/ElasticSearchSource.cs @@ -31,7 +31,7 @@ public class ElasticSearchSource /// ElasticSearchSourceConfig /// public static ElasticSearchSourceConfig ElasticSearchSourceConfig { get; } = - IocManager.Instance.Resolve(); + IocManager.ServiceLocatorCurrent.GetInstance(); /// /// Node diff --git a/WorkData/WorkData.EntityFramework/Auditables/AuditableConfigs.cs b/WorkData/WorkData.EntityFramework/Auditables/AuditableConfigs.cs index 605ea42..7287911 100644 --- a/WorkData/WorkData.EntityFramework/Auditables/AuditableConfigs.cs +++ b/WorkData/WorkData.EntityFramework/Auditables/AuditableConfigs.cs @@ -58,7 +58,7 @@ public virtual void InitializedAuditables(bool isReload = false) var auditable = new Auditable { EntityState = item.EntityState, - AuditableImpl = IocManager.Instance.ResolveName(type.FullName) + AuditableImpl = IocManager.ServiceLocatorCurrent.GetInstance(type.FullName) }; Auditables.Add(auditable); } diff --git a/WorkData/WorkData.EntityFramework/Auditables/CreateAuditable.cs b/WorkData/WorkData.EntityFramework/Auditables/CreateAuditable.cs index d4ff21e..3dd3aee 100644 --- a/WorkData/WorkData.EntityFramework/Auditables/CreateAuditable.cs +++ b/WorkData/WorkData.EntityFramework/Auditables/CreateAuditable.cs @@ -13,26 +13,24 @@ using System; using System.Security.Claims; using WorkData.Code.Entities.BaseInterfaces; -using WorkData.Code.Extensions; using WorkData.Code.Sessions; +using WorkData.Util.Common.Extensions; namespace WorkData.EntityFramework.Auditables { /// - /// CreateAuditable + /// CreateAuditable /// [Audit(EntityState.Added)] public class CreateAuditable : IAuditable { - public void AttemptSetEntityProperty(object entityAsObj, IWorkDataSession workDataSession, ClaimsPrincipal claimsPrincipal) + public void AttemptSetEntityProperty(object entityAsObj, IWorkDataSession workDataSession, + ClaimsPrincipal claimsPrincipal) { var entity = entityAsObj.As(); if (entity == null) return; - if (string.IsNullOrEmpty(entity.CreateUserId)) - { - entity.CreateUserId = workDataSession?.UserId; - } + if (string.IsNullOrEmpty(entity.CreateUserId)) entity.CreateUserId = workDataSession?.UserId; entity.CreateTime = DateTime.Now; } diff --git a/WorkData/WorkData.EntityFramework/Auditables/UpdateAuditable.cs b/WorkData/WorkData.EntityFramework/Auditables/UpdateAuditable.cs index b2860b7..7c0a597 100644 --- a/WorkData/WorkData.EntityFramework/Auditables/UpdateAuditable.cs +++ b/WorkData/WorkData.EntityFramework/Auditables/UpdateAuditable.cs @@ -13,23 +13,21 @@ using System; using System.Security.Claims; using WorkData.Code.Entities.BaseInterfaces; -using WorkData.Code.Extensions; using WorkData.Code.Sessions; +using WorkData.Util.Common.Extensions; namespace WorkData.EntityFramework.Auditables { [Audit(EntityState.Modified)] public class UpdateAuditable : IAuditable { - public void AttemptSetEntityProperty(object entityAsObj, IWorkDataSession workDataSession, ClaimsPrincipal claimsPrincipal) + public void AttemptSetEntityProperty(object entityAsObj, IWorkDataSession workDataSession, + ClaimsPrincipal claimsPrincipal) { var entity = entityAsObj.As(); if (entity == null) return; - if (string.IsNullOrEmpty(entity.ModifierUserId)) - { - entity.ModifierUserId = workDataSession?.UserId; - } + if (string.IsNullOrEmpty(entity.ModifierUserId)) entity.ModifierUserId = workDataSession?.UserId; entity.ModifierTime = DateTime.Now; } diff --git a/WorkData/WorkData.EntityFramework/EntityFrameworkModule.cs b/WorkData/WorkData.EntityFramework/EntityFrameworkModule.cs index dda8c78..0b0a846 100644 --- a/WorkData/WorkData.EntityFramework/EntityFrameworkModule.cs +++ b/WorkData/WorkData.EntityFramework/EntityFrameworkModule.cs @@ -11,10 +11,10 @@ #region -using System.Reflection; using Autofac; +using System.Reflection; +using WorkData.Code.Entities; using WorkData.Code.Entities.BaseInterfaces; -using WorkData.Code.Helpers; using WorkData.Code.Repositories; using WorkData.Code.UnitOfWorks; using WorkData.EntityFramework.Auditables; @@ -78,6 +78,11 @@ protected override void Load(ContainerBuilder builder) } #endregion + #region AuditableConfigs + + builder.RegisterType().SingleInstance(); + #endregion + #region Repository注入 var types = _typeFinder.FindClassesOfType(); diff --git a/WorkData/WorkData.EntityFramework/Extensions/DbContextExtension.cs b/WorkData/WorkData.EntityFramework/Extensions/DbContextExtension.cs index 8bc5865..ccaec92 100644 --- a/WorkData/WorkData.EntityFramework/Extensions/DbContextExtension.cs +++ b/WorkData/WorkData.EntityFramework/Extensions/DbContextExtension.cs @@ -2,6 +2,7 @@ using Microsoft.Extensions.DependencyInjection; using System; using System.Linq; +using WorkData.Dependency; using WorkData.EntityFramework.Auditables; using WorkData.Extensions.ServiceCollections; @@ -16,19 +17,19 @@ public static class DbContextExtension /// /// /// - public static IServiceCollection AddWorkDataDbContext(this IServiceCollection serviceCollection,string keyName) where TContext : DbContext + public static IServiceCollection AddWorkDataDbContext(this IServiceCollection serviceCollection, string keyName) where TContext : DbContext { - var dbContextOptions = serviceCollection.ResolveServiceValue() ?? + var dbContextOptions = serviceCollection.ResolveServiceValue() ?? throw new Exception("WorkDataDbContextOptions 不能为空!"); - if (dbContextOptions.WorkDataDbConfigs==null) + if (dbContextOptions.WorkDataDbConfigs == null) throw new Exception("dbContextOptions.WorkDataDbConfigs 不能为空!"); var workDataDbConfig = dbContextOptions.WorkDataDbConfigs .Single(x => x.KeyName == keyName); - if(workDataDbConfig==null) - throw new Exception("workDataDbConfig 不能为空!"); + if (workDataDbConfig == null) + throw new Exception("workDataDbConfig 不能为空!"); return serviceCollection.AddDbContext(optionsAction => { @@ -56,9 +57,7 @@ public static IServiceCollection AddWorkDataDbContext(this IServiceCol /// public static IServiceCollection InitAuditable(this IServiceCollection serviceCollection) { - serviceCollection.AddSingleton(); - var serviceProvider = serviceCollection.BuildServiceProvider(); - var auditableConfigs = serviceProvider.GetService(); + var auditableConfigs = IocManager.ServiceLocatorCurrent.GetInstance(); if (AuditableConfigs.AuditableDictionary == null) { auditableConfigs.InitializedAuditables(); diff --git a/WorkData/WorkData.EntityFramework/Extensions/DbContextHelper.cs b/WorkData/WorkData.EntityFramework/Extensions/DbContextHelper.cs index e82927b..ea1352f 100644 --- a/WorkData/WorkData.EntityFramework/Extensions/DbContextHelper.cs +++ b/WorkData/WorkData.EntityFramework/Extensions/DbContextHelper.cs @@ -15,9 +15,9 @@ using System.Linq; using System.Reflection; using WorkData.Code.Entities; -using WorkData.Code.Helpers; using WorkData.Code.Repositories; using WorkData.Extensions.TypeFinders; +using WorkData.Util.Common.Helpers; namespace WorkData.EntityFramework.Extensions { @@ -28,9 +28,11 @@ public static IEnumerable GetEntityTypeInfos(Type dbContextType) return from property in dbContextType.GetProperties(BindingFlags.Public | BindingFlags.Instance) where - ReflectionHelper.IsAssignableToGenericType(property.PropertyType, typeof(DbSet<>)) && - ReflectionHelper.IsAssignableToType(property.PropertyType.GenericTypeArguments[0], typeof(IAggregateRoot)) && - ReflectionHelper.IsAssignableToGenericType(property.PropertyType.GenericTypeArguments[0], typeof(IEntity<>)) + ReflectionHelper.IsAssignableToGenericType(property.PropertyType, typeof(DbSet<>)) && + ReflectionHelper.IsAssignableToType(property.PropertyType.GenericTypeArguments[0], + typeof(IAggregateRoot)) && + ReflectionHelper.IsAssignableToGenericType(property.PropertyType.GenericTypeArguments[0], + typeof(IEntity<>)) select new EntityTypeInfo(property.PropertyType.GenericTypeArguments[0], property.DeclaringType); } } diff --git a/WorkData/WorkData.EntityFramework/Extensions/QueryExtension.cs b/WorkData/WorkData.EntityFramework/Extensions/QueryExtension.cs index e9aa2a6..4cefa90 100644 --- a/WorkData/WorkData.EntityFramework/Extensions/QueryExtension.cs +++ b/WorkData/WorkData.EntityFramework/Extensions/QueryExtension.cs @@ -1,5 +1,5 @@ -using System.Linq; -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using System.Linq; using WorkData.Code.Repositories.Predicates; namespace WorkData.EntityFramework.Extensions @@ -37,6 +37,5 @@ public static IQueryable WhereIf(this DbSet dbSet, IPredicateGroup p (current, predicate) => predicate.Condition ? current.Where(predicate.Expression) : current); } - } } \ No newline at end of file diff --git a/WorkData/WorkData.EntityFramework/Repositories/EfBaseRepository.cs b/WorkData/WorkData.EntityFramework/Repositories/EfBaseRepository.cs index a3d2b65..93c5084 100644 --- a/WorkData/WorkData.EntityFramework/Repositories/EfBaseRepository.cs +++ b/WorkData/WorkData.EntityFramework/Repositories/EfBaseRepository.cs @@ -11,10 +11,10 @@ #region +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; -using Microsoft.EntityFrameworkCore; using WorkData.Code.Entities; using WorkData.Code.Repositories; using WorkData.Code.Repositories.Predicates; @@ -72,8 +72,6 @@ public DbContext GetDbContext() #region Query - - /// /// FindBy /// @@ -122,7 +120,6 @@ public override TEntity AsNoFilterFindBy(TPrimaryKey primaryKey) /// public override TEntity AsNoFilterFindBy(TPrimaryKey primaryKey, string[] includeNames) { - var query = DbSet.AsNoFilter(); foreach (var includeName in includeNames) { @@ -133,7 +130,6 @@ public override TEntity AsNoFilterFindBy(TPrimaryKey primaryKey, string[] includ return entity; } - /// /// FindBy /// @@ -166,7 +162,6 @@ public override TEntity FindBy(TPrimaryKey primaryKey, string[] includeNames, pa return entity; } - /// /// GetAll /// @@ -176,7 +171,6 @@ public override IQueryable GetAll() return DbSet; } - /// /// GetAll /// @@ -243,11 +237,11 @@ public override IQueryable AsNoFilterGetAll(string[] includeNames) } return query; } + #endregion #region Insert - /// /// Insert /// diff --git a/WorkData/WorkData.EntityFramework/Repositories/Filters/Configs/BaseDynamicFilterEnum.cs b/WorkData/WorkData.EntityFramework/Repositories/Filters/Configs/BaseDynamicFilterEnum.cs index a554a64..b52237a 100644 --- a/WorkData/WorkData.EntityFramework/Repositories/Filters/Configs/BaseDynamicFilterEnum.cs +++ b/WorkData/WorkData.EntityFramework/Repositories/Filters/Configs/BaseDynamicFilterEnum.cs @@ -1,14 +1,10 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace WorkData.EntityFramework.Repositories.Filters.Configs +namespace WorkData.EntityFramework.Repositories.Filters.Configs { /// /// BaseDynamicFilterEnum /// public enum BaseDynamicFilterEnum { - CreateUserId=1, + CreateUserId = 1, } -} +} \ No newline at end of file diff --git a/WorkData/WorkData.EntityFramework/Repositories/Filters/Configs/DynamicFilterAttribute.cs b/WorkData/WorkData.EntityFramework/Repositories/Filters/Configs/DynamicFilterAttribute.cs index 5603f3b..362c835 100644 --- a/WorkData/WorkData.EntityFramework/Repositories/Filters/Configs/DynamicFilterAttribute.cs +++ b/WorkData/WorkData.EntityFramework/Repositories/Filters/Configs/DynamicFilterAttribute.cs @@ -2,12 +2,11 @@ namespace WorkData.EntityFramework.Repositories.Filters.Configs { - public class DynamicFilterAttribute: Attribute + public class DynamicFilterAttribute : Attribute { /// /// Name /// public string Name { get; set; } - } } \ No newline at end of file diff --git a/WorkData/WorkData.EntityFramework/Repositories/Filters/Configs/DynamicFilterConfig.cs b/WorkData/WorkData.EntityFramework/Repositories/Filters/Configs/DynamicFilterConfig.cs index b7bc010..6bf2432 100644 --- a/WorkData/WorkData.EntityFramework/Repositories/Filters/Configs/DynamicFilterConfig.cs +++ b/WorkData/WorkData.EntityFramework/Repositories/Filters/Configs/DynamicFilterConfig.cs @@ -7,6 +7,6 @@ namespace WorkData.EntityFramework.Repositories.Filters.Configs /// public class DynamicFilterConfig { - public List DynamicFilterList{ get; set; } + public List DynamicFilterList { get; set; } } } \ No newline at end of file diff --git a/WorkData/WorkData.EntityFramework/Repositories/Filters/DynamicFilterDisposable.cs b/WorkData/WorkData.EntityFramework/Repositories/Filters/DynamicFilterDisposable.cs index 0d78155..6e6f31f 100644 --- a/WorkData/WorkData.EntityFramework/Repositories/Filters/DynamicFilterDisposable.cs +++ b/WorkData/WorkData.EntityFramework/Repositories/Filters/DynamicFilterDisposable.cs @@ -1,8 +1,6 @@ -using System; -using System.Collections.Generic; +using Microsoft.EntityFrameworkCore; +using System; using System.Linq; -using System.Text; -using Microsoft.EntityFrameworkCore; using Z.EntityFramework.Plus; namespace WorkData.EntityFramework.Repositories.Filters @@ -33,4 +31,4 @@ public void Dispose() } } } -} +} \ No newline at end of file diff --git a/WorkData/WorkData.EntityFramework/Repositories/Filters/DynamicFilterManager.cs b/WorkData/WorkData.EntityFramework/Repositories/Filters/DynamicFilterManager.cs index d74f208..9725fd2 100644 --- a/WorkData/WorkData.EntityFramework/Repositories/Filters/DynamicFilterManager.cs +++ b/WorkData/WorkData.EntityFramework/Repositories/Filters/DynamicFilterManager.cs @@ -1,6 +1,6 @@ -using System.Collections.Generic; +using Microsoft.EntityFrameworkCore; +using System.Collections.Generic; using System.Linq; -using Microsoft.EntityFrameworkCore; using WorkData.Dependency; using WorkData.EntityFramework.Repositories.Filters.Configs; using Z.EntityFramework.Plus; @@ -47,8 +47,8 @@ public static IQueryable AsWorkDataNoFilter(this DbSet query, DbContext var items = CacheGenericDynamicFilter.Where(x => filterStrings.Contains(x.Key)); query1 = items.Select(key => context.Filter(key.Key)).Where(item => item != null) - .Aggregate(query1, (current, item) => (IQueryable) item.ApplyFilter(current)); - return (IQueryable) query1; + .Aggregate(query1, (current, item) => (IQueryable)item.ApplyFilter(current)); + return (IQueryable)query1; } /// @@ -60,7 +60,7 @@ public static void SetCacheGenericDynamicFilter() foreach (var item in dynamicFilterConfig.DynamicFilterList) { - var dynamicFilter = IocManager.Instance.ResolveName(item); + var dynamicFilter = IocManager.ServiceLocatorCurrent.GetInstance(item); CacheGenericDynamicFilter.Add(item, dynamicFilter); } } diff --git a/WorkData/WorkData.EntityFramework/Repositories/Filters/Impls/CreateDynamicFilter.cs b/WorkData/WorkData.EntityFramework/Repositories/Filters/Impls/CreateDynamicFilter.cs index 829e2da..f793485 100644 --- a/WorkData/WorkData.EntityFramework/Repositories/Filters/Impls/CreateDynamicFilter.cs +++ b/WorkData/WorkData.EntityFramework/Repositories/Filters/Impls/CreateDynamicFilter.cs @@ -1,14 +1,10 @@ -using System; -using System.Collections.Generic; +using Microsoft.EntityFrameworkCore; using System.Linq; -using System.Text; -using Microsoft.EntityFrameworkCore; using WorkData.Code.Entities.BaseInterfaces; using WorkData.Code.Sessions; using WorkData.Dependency; -using WorkData.EntityFramework.Repositories.Filters; -using Z.EntityFramework.Plus; using WorkData.EntityFramework.Repositories.Filters.Configs; +using Z.EntityFramework.Plus; namespace WorkData.EntityFramework.Repositories.Filters.Impls { @@ -25,13 +21,13 @@ public class CreateDynamicFilter : IDynamicFilter /// public BaseQueryFilter InitFilter(DbContext dbContext) { - var workdataSession = IocManager.Instance.Resolve(); + var workdataSession = IocManager.ServiceLocatorCurrent.GetInstance(); if (workdataSession == null) return dbContext - .Filter("CreateUserId", x => x.Where(w => w.CreateUserId == string.Empty )); + .Filter("CreateUserId", x => x.Where(w => w.CreateUserId == string.Empty)); return dbContext .Filter("CreateUserId", x => x.Where(w => w.CreateUserId == workdataSession.UserId || w.CreateUserId == "")); } } -} +} \ No newline at end of file diff --git a/WorkData/WorkData.EntityFramework/Repositories/Filters/Impls/SoftDeleteDynamicFilter.cs b/WorkData/WorkData.EntityFramework/Repositories/Filters/Impls/SoftDeleteDynamicFilter.cs index dee42d5..5a07f1a 100644 --- a/WorkData/WorkData.EntityFramework/Repositories/Filters/Impls/SoftDeleteDynamicFilter.cs +++ b/WorkData/WorkData.EntityFramework/Repositories/Filters/Impls/SoftDeleteDynamicFilter.cs @@ -1,5 +1,5 @@ -using System.Linq; -using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore; +using System.Linq; using WorkData.Code.Entities; using WorkData.EntityFramework.Repositories.Filters.Configs; using Z.EntityFramework.Plus; @@ -10,7 +10,7 @@ namespace WorkData.EntityFramework.Repositories.Filters.Impls /// SoftDeleteDynamicFilter /// [DynamicFilter(Name = "SoftDelete")] - public class SoftDeleteDynamicFilter: IDynamicFilter + public class SoftDeleteDynamicFilter : IDynamicFilter { public BaseQueryFilter InitFilter(DbContext dbContext) { diff --git a/WorkData/WorkData.EntityFramework/UnitOfWorks/EfContextFactory.cs b/WorkData/WorkData.EntityFramework/UnitOfWorks/EfContextFactory.cs index afc17e1..63df494 100644 --- a/WorkData/WorkData.EntityFramework/UnitOfWorks/EfContextFactory.cs +++ b/WorkData/WorkData.EntityFramework/UnitOfWorks/EfContextFactory.cs @@ -15,11 +15,8 @@ using Microsoft.EntityFrameworkCore.Storage; using System; using System.Collections.Generic; -using System.Linq; -using WorkData.Code.Entities.BaseInterfaces; using WorkData.Dependency; using WorkData.EntityFramework.Repositories.Filters; -using Z.EntityFramework.Plus; #endregion @@ -30,13 +27,6 @@ namespace WorkData.EntityFramework.UnitOfWorks /// public class EfContextFactory : IEfContextFactory { - private readonly IResolver _resolver; - - public EfContextFactory(IResolver resolver) - { - _resolver = resolver; - } - /// /// default current context /// @@ -73,7 +63,7 @@ public TDbContext GetCurrentDbContext(Dictionary { dic.Remove(conString + "DbContext"); } - dbContext = _resolver.Resolve(); + dbContext = IocManager.ServiceLocatorCurrent.GetInstance(); //初始化拦截器 dbContext.AddDynamicFilter(); diff --git a/WorkData/WorkData.EntityFramework/WorkDataBaseDbContext.cs b/WorkData/WorkData.EntityFramework/WorkDataBaseDbContext.cs index a185c3d..22755aa 100644 --- a/WorkData/WorkData.EntityFramework/WorkDataBaseDbContext.cs +++ b/WorkData/WorkData.EntityFramework/WorkDataBaseDbContext.cs @@ -1,9 +1,9 @@ #region +using Microsoft.EntityFrameworkCore; using System; using System.Linq; using System.Security.Claims; -using Microsoft.EntityFrameworkCore; using WorkData.Code.Sessions; using WorkData.EntityFramework.Auditables; diff --git a/WorkData/WorkData.EntityFramework/WorkDataDbConfig.cs b/WorkData/WorkData.EntityFramework/WorkDataDbConfig.cs index e1035c1..bd9ea1e 100644 --- a/WorkData/WorkData.EntityFramework/WorkDataDbConfig.cs +++ b/WorkData/WorkData.EntityFramework/WorkDataDbConfig.cs @@ -18,7 +18,6 @@ public class WorkDataDbContextOptions public List WorkDataDbConfigs { get; set; } } - public class WorkDataDbConfig { /// diff --git a/WorkData/WorkData.Ocelot/Startup.cs b/WorkData/WorkData.Ocelot/Startup.cs index 2fdf669..08e05af 100644 --- a/WorkData/WorkData.Ocelot/Startup.cs +++ b/WorkData/WorkData.Ocelot/Startup.cs @@ -42,7 +42,7 @@ public IServiceProvider ConfigureServices(IServiceCollection services) "Config/moduleConfig.json" }; - BootstrapWarpper.InitiateConfig(services, paths); + BootstrapWarpper.InitiateConfig(paths,services); return new AutofacServiceProvider (BootstrapWarpper.IocManager.IocContainer); diff --git a/WorkData/WorkData.Service/Permissions/DtoProfiles/BaseUserProfile.cs b/WorkData/WorkData.Service/Permissions/DtoProfiles/BaseUserProfile.cs index 3e41aa1..007ef20 100644 --- a/WorkData/WorkData.Service/Permissions/DtoProfiles/BaseUserProfile.cs +++ b/WorkData/WorkData.Service/Permissions/DtoProfiles/BaseUserProfile.cs @@ -1,11 +1,10 @@ -using AutoMapper; -using WorkData.Code.AutoMappers; +using WorkData.Code.AutoMappers; using WorkData.Domain.Permissions.Users; using WorkData.Service.Permissions.Users.Dto; namespace WorkData.Service.Permissions.DtoProfiles { - public class BaseUserProfile: WorkDataBaseProfile + public class BaseUserProfile : WorkDataBaseProfile { public BaseUserProfile() { diff --git a/WorkData/WorkData.Service/Permissions/Users/Dto/BaseUserInputDto.cs b/WorkData/WorkData.Service/Permissions/Users/Dto/BaseUserInputDto.cs index afffd97..63bdd44 100644 --- a/WorkData/WorkData.Service/Permissions/Users/Dto/BaseUserInputDto.cs +++ b/WorkData/WorkData.Service/Permissions/Users/Dto/BaseUserInputDto.cs @@ -6,7 +6,5 @@ public class BaseUserInputDto /// Id /// public string Id { get; set; } - - } } \ No newline at end of file diff --git a/WorkData/WorkData.Service/Permissions/Users/IUserService.cs b/WorkData/WorkData.Service/Permissions/Users/IUserService.cs index 87d2e44..a6d91e3 100644 --- a/WorkData/WorkData.Service/Permissions/Users/IUserService.cs +++ b/WorkData/WorkData.Service/Permissions/Users/IUserService.cs @@ -2,6 +2,5 @@ { public interface IUserService { - } } \ No newline at end of file diff --git a/WorkData/WorkData.Service/WorkDataServiceModule.cs b/WorkData/WorkData.Service/WorkDataServiceModule.cs index 3b734a3..e8c1fbb 100644 --- a/WorkData/WorkData.Service/WorkDataServiceModule.cs +++ b/WorkData/WorkData.Service/WorkDataServiceModule.cs @@ -2,7 +2,6 @@ using Autofac; using AutoMapper; -using WorkData.Code.Extensions; using WorkData.Extensions.Modules; #endregion @@ -21,6 +20,5 @@ protected override void Load(ContainerBuilder builder) cfg.AddProfiles(GetType().Assembly); })).SingleInstance(); } - } } \ No newline at end of file diff --git a/WorkData/WorkData.Code/Extensions/ObejctExtensions.cs b/WorkData/WorkData.Util.Common/Extensions/ObejctExtensions.cs similarity index 50% rename from WorkData/WorkData.Code/Extensions/ObejctExtensions.cs rename to WorkData/WorkData.Util.Common/Extensions/ObejctExtensions.cs index bfaa25c..7570459 100644 --- a/WorkData/WorkData.Code/Extensions/ObejctExtensions.cs +++ b/WorkData/WorkData.Util.Common/Extensions/ObejctExtensions.cs @@ -1,14 +1,4 @@ -// ------------------------------------------------------------------------------ -// Copyright 吴来伟个人 版权所有。 -// 项目名:WorkData.Code -// 文件名:ObejctExtensions.cs -// 创建标识:吴来伟 2017-12-21 15:58 -// 创建描述: -// -// 修改标识:吴来伟2017-12-21 15:58 -// 修改描述: -// ------------------------------------------------------------------------------ -namespace WorkData.Code.Extensions +namespace WorkData.Util.Common.Extensions { public static class ObejctExtensions { diff --git a/WorkData/WorkData.Util.Common/Extensions/StringExtensions.cs b/WorkData/WorkData.Util.Common/Extensions/StringExtensions.cs index 19ff500..dad7782 100644 --- a/WorkData/WorkData.Util.Common/Extensions/StringExtensions.cs +++ b/WorkData/WorkData.Util.Common/Extensions/StringExtensions.cs @@ -2,6 +2,7 @@ using System; using System.Linq; +using System.Text; #endregion NameSpace @@ -12,6 +13,29 @@ namespace WorkData.Util.Common.Extensions /// public static class StringExtensions { + /// + /// Base 64 Encoding with URL and Filename Safe Alphabet using UTF-8 character set. + /// + ///The origianl string + ///The Base64 encoded string + public static string Base64ForUrlEncode(this string str) + { + byte[] c = Convert.FromBase64String(str); + return Encoding.Default.GetString(c); + } + + /// + /// Decode Base64 encoded string with URL and Filename Safe Alphabet using UTF-8. + /// + ///Base64 code + ///The decoded string. + public static string Base64ForUrlDecode(this string str) + { + var b = Encoding.Default.GetBytes(str); + //转成 Base64 形式的 System.String + return Convert.ToBase64String(b); + } + /// /// SplitString /// diff --git a/WorkData/WorkData.Code/Extensions/Totp.cs b/WorkData/WorkData.Util.Common/Extensions/Totp.cs similarity index 92% rename from WorkData/WorkData.Code/Extensions/Totp.cs rename to WorkData/WorkData.Util.Common/Extensions/Totp.cs index 2b289b0..3d13aee 100644 --- a/WorkData/WorkData.Code/Extensions/Totp.cs +++ b/WorkData/WorkData.Util.Common/Extensions/Totp.cs @@ -1,14 +1,4 @@ -// ------------------------------------------------------------------------------ -// Copyright 吴来伟个人 版权所有。 -// 项目名:WorkData.Code -// 文件名:Totp.cs -// 创建标识:吴来伟 2018-01-31 13:53 -// 创建描述: -// -// 修改标识:吴来伟2018-01-31 13:53 -// 修改描述: -// ------------------------------------------------------------------------------ - + #region using System; @@ -18,7 +8,7 @@ #endregion -namespace WorkData.Code.Extensions +namespace WorkData.Util.Common.Extensions { /// /// https://tools.ietf.org/html/rfc6238 diff --git a/WorkData/WorkData.Code/Helpers/AsyncHelper.cs b/WorkData/WorkData.Util.Common/Helpers/AsyncHelper.cs similarity index 96% rename from WorkData/WorkData.Code/Helpers/AsyncHelper.cs rename to WorkData/WorkData.Util.Common/Helpers/AsyncHelper.cs index 5fdde0c..e34653d 100644 --- a/WorkData/WorkData.Code/Helpers/AsyncHelper.cs +++ b/WorkData/WorkData.Util.Common/Helpers/AsyncHelper.cs @@ -12,7 +12,7 @@ using System.Reflection; using System.Threading.Tasks; -namespace WorkData.Code.Helpers +namespace WorkData.Util.Common.Helpers { public class AsyncHelper { diff --git a/WorkData/WorkData.Util.Common/Helpers/LoadAttributeHelper.cs b/WorkData/WorkData.Util.Common/Helpers/LoadAttributeHelper.cs index 6b7bf4e..b2a139b 100644 --- a/WorkData/WorkData.Util.Common/Helpers/LoadAttributeHelper.cs +++ b/WorkData/WorkData.Util.Common/Helpers/LoadAttributeHelper.cs @@ -13,7 +13,6 @@ using System.Linq; using System.Linq.Expressions; using System.Reflection; -using WorkData.Util.Common.Reflections; namespace WorkData.Util.Common.Helpers { diff --git a/WorkData/WorkData.Util.Common/Reflections/ReflectionHelper.cs b/WorkData/WorkData.Util.Common/Helpers/ReflectionHelper.cs similarity index 69% rename from WorkData/WorkData.Util.Common/Reflections/ReflectionHelper.cs rename to WorkData/WorkData.Util.Common/Helpers/ReflectionHelper.cs index af61923..0481fed 100644 --- a/WorkData/WorkData.Util.Common/Reflections/ReflectionHelper.cs +++ b/WorkData/WorkData.Util.Common/Helpers/ReflectionHelper.cs @@ -12,12 +12,132 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Linq.Expressions; using System.Reflection; +using System.Text; -namespace WorkData.Util.Common.Reflections +namespace WorkData.Util.Common.Helpers { - public class ReflectionHelper + public static class ReflectionExtensionHelper { + private static readonly List SimpleTypes = new List + { + typeof (byte), + typeof (sbyte), + typeof (short), + typeof (ushort), + typeof (int), + typeof (uint), + typeof (long), + typeof (ulong), + typeof (float), + typeof (double), + typeof (decimal), + typeof (bool), + typeof (string), + typeof (char), + typeof (Guid), + typeof (DateTime), + typeof (DateTimeOffset), + typeof (byte[]) + }; + + public static MemberInfo GetProperty(LambdaExpression lambda) + { + Expression expr = lambda; + for (; ; ) + { + switch (expr.NodeType) + { + case ExpressionType.Lambda: + expr = ((LambdaExpression)expr).Body; + break; + + case ExpressionType.Convert: + expr = ((UnaryExpression)expr).Operand; + break; + + case ExpressionType.MemberAccess: + var memberExpression = (MemberExpression)expr; + var mi = memberExpression.Member; + return mi; + + default: + return null; + } + } + } + + public static IDictionary GetObjectValues(object obj) + { + IDictionary result = new Dictionary(); + if (obj == null) + { + return result; + } + + foreach (var propertyInfo in obj.GetType().GetProperties()) + { + var name = propertyInfo.Name; + var value = propertyInfo.GetValue(obj, null); + result[name] = value; + } + + return result; + } + + public static string AppendStrings(this IEnumerable list, string seperator = ", ") + { + return list.Aggregate(new StringBuilder() + , (sb, s) => (sb.Length == 0 ? sb : sb.Append(seperator)).Append(s) + , sb => sb.ToString()); + } + + public static bool IsSimpleType(Type type) + { + var actualType = type; + if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)) + { + actualType = type.GetGenericArguments()[0]; + } + + return SimpleTypes.Contains(actualType); + } + + public static string GetParameterName(this IDictionary parameters, string parameterName, + char parameterPrefix) + { + return string.Format("{0}{1}_{2}", parameterPrefix, parameterName, parameters.Count); + } + + public static string SetParameterName(this IDictionary parameters, string parameterName, + object value, char parameterPrefix) + { + var name = parameters.GetParameterName(parameterName, parameterPrefix); + parameters.Add(name, value); + return name; + } + } + + public static class ReflectionHelper + { + /// + /// Checks whether implements/inherits . + /// + /// Type to check + /// type + public static bool IsAssignableToType(Type givenType, Type type) + { + var givenTypeInfo = givenType.GetTypeInfo(); + + if (givenType.GetInterfaces().Any(interfaceType => interfaceType == type)) + { + return true; + } + + return givenTypeInfo.BaseType != null && IsAssignableToType(givenTypeInfo.BaseType, type); + } + /// /// Checks whether implements/inherits . /// diff --git a/WorkData/WorkData.Util.Common/Reflections/ReflectionExtensionHelper.cs b/WorkData/WorkData.Util.Common/Reflections/ReflectionExtensionHelper.cs deleted file mode 100644 index 87c6125..0000000 --- a/WorkData/WorkData.Util.Common/Reflections/ReflectionExtensionHelper.cs +++ /dev/null @@ -1,121 +0,0 @@ -// ------------------------------------------------------------------------------ -// Copyright 吴来伟个人 版权所有。 -// 项目名:WorkData.Util.Common -// 文件名:ReflectionExtendionHelper.cs -// 创建标识:吴来伟 2018-05-03 10:24 -// 创建描述: -// -// 修改标识:吴来伟2018-05-03 10:24 -// 修改描述: -// ------------------------------------------------------------------------------ - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Linq.Expressions; -using System.Reflection; -using System.Text; - -namespace WorkData.Util.Common.Reflections -{ - public static class ReflectionExtensionHelper - { - private static readonly List _simpleTypes = new List - { - typeof (byte), - typeof (sbyte), - typeof (short), - typeof (ushort), - typeof (int), - typeof (uint), - typeof (long), - typeof (ulong), - typeof (float), - typeof (double), - typeof (decimal), - typeof (bool), - typeof (string), - typeof (char), - typeof (Guid), - typeof (DateTime), - typeof (DateTimeOffset), - typeof (byte[]) - }; - - public static MemberInfo GetProperty(LambdaExpression lambda) - { - Expression expr = lambda; - for (; ; ) - { - switch (expr.NodeType) - { - case ExpressionType.Lambda: - expr = ((LambdaExpression)expr).Body; - break; - - case ExpressionType.Convert: - expr = ((UnaryExpression)expr).Operand; - break; - - case ExpressionType.MemberAccess: - var memberExpression = (MemberExpression)expr; - var mi = memberExpression.Member; - return mi; - - default: - return null; - } - } - } - - public static IDictionary GetObjectValues(object obj) - { - IDictionary result = new Dictionary(); - if (obj == null) - { - return result; - } - - foreach (var propertyInfo in obj.GetType().GetProperties()) - { - var name = propertyInfo.Name; - var value = propertyInfo.GetValue(obj, null); - result[name] = value; - } - - return result; - } - - public static string AppendStrings(this IEnumerable list, string seperator = ", ") - { - return list.Aggregate(new StringBuilder() - , (sb, s) => (sb.Length == 0 ? sb : sb.Append(seperator)).Append(s) - , sb => sb.ToString()); - } - - public static bool IsSimpleType(Type type) - { - var actualType = type; - if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)) - { - actualType = type.GetGenericArguments()[0]; - } - - return _simpleTypes.Contains(actualType); - } - - public static string GetParameterName(this IDictionary parameters, string parameterName, - char parameterPrefix) - { - return string.Format("{0}{1}_{2}", parameterPrefix, parameterName, parameters.Count); - } - - public static string SetParameterName(this IDictionary parameters, string parameterName, - object value, char parameterPrefix) - { - var name = parameters.GetParameterName(parameterName, parameterPrefix); - parameters.Add(name, value); - return name; - } - } -} \ No newline at end of file diff --git a/WorkData/WorkData.Util.Redis/NullRedisManager.cs b/WorkData/WorkData.Util.Redis/NullRedisManager.cs index fca7501..a48b4a9 100644 --- a/WorkData/WorkData.Util.Redis/NullRedisManager.cs +++ b/WorkData/WorkData.Util.Redis/NullRedisManager.cs @@ -27,6 +27,6 @@ public class NullRedisManager /// Singleton InstanceManager. /// public static BaseRedisServiceManager InstanceManager { get; } = - IocManager.Instance.Resolve(); + IocManager.ServiceLocatorCurrent.GetInstance(); } } \ No newline at end of file diff --git a/WorkData/WorkData.Util.Redis/RealTime/RedisDataSource.cs b/WorkData/WorkData.Util.Redis/RealTime/RedisDataSource.cs index e108ae8..a3346e4 100644 --- a/WorkData/WorkData.Util.Redis/RealTime/RedisDataSource.cs +++ b/WorkData/WorkData.Util.Redis/RealTime/RedisDataSource.cs @@ -20,7 +20,7 @@ public class RedisDataSource /// WorkDataRedisConfig /// public static WorkDataRedisConfig WorkDataRedisConfig { get; } - = IocManager.Instance.Resolve(); + = IocManager.ServiceLocatorCurrent.GetInstance(); private static ConnectionMultiplexer _instance; private static readonly object Locker = new object(); diff --git a/WorkData/WorkData.Web/ApiController/OAuthController.cs b/WorkData/WorkData.Web/ApiController/OAuthController.cs index 08b78cc..2907e99 100644 --- a/WorkData/WorkData.Web/ApiController/OAuthController.cs +++ b/WorkData/WorkData.Web/ApiController/OAuthController.cs @@ -11,14 +11,15 @@ #region -using Microsoft.AspNetCore.Mvc; -using Microsoft.IdentityModel.Tokens; using System; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Text; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.IdentityModel.Tokens; +using WorkData.BaseWeb.Infrastructure; using WorkData.Code.JwtSecurityTokens; -using WorkData.Code.Webs.Infrastructure; using WorkData.Dependency; using WorkData.Web.Models.OAuths; @@ -33,16 +34,17 @@ public class OAuthController : WorkDataBaseApiController IocManager.Instance.ResolveServiceValue(); /// - /// AccessToken + /// AccessToken /// /// /// - [HttpPost, Route("access_token")] + [HttpPost] + [Route("access_token")] public IActionResult AccessToken([FromBody] RequestOAuthViewModel requestOAuthViewModel) { var claim = new[] { - new Claim(ClaimTypes.NameIdentifier,"1"), + new Claim(ClaimTypes.NameIdentifier, "1"), new Claim(ClaimTypes.Name, requestOAuthViewModel.UserName), new Claim(ClaimTypes.Role, "admin") }; @@ -59,7 +61,20 @@ public IActionResult AccessToken([FromBody] RequestOAuthViewModel requestOAuthVi DateTime.Now.AddMinutes(WorkDataBaseJwt.Expires), creds); - return AsSuccessJson(new { token = new JwtSecurityTokenHandler().WriteToken(token) }); + return AsSuccessJson(new {token = new JwtSecurityTokenHandler().WriteToken(token)}); + } + + /// + /// AccessToken + /// + /// + /// + [HttpGet] + [Route("v_token")] + [Authorize] + public IActionResult VaToken() + { + return AsSuccessJson(new { token ="123123" }); } } } \ No newline at end of file diff --git a/WorkData/WorkData.Web/ApiController/WeiXinShareController.cs b/WorkData/WorkData.Web/ApiController/WeiXinShareController.cs index 2f7b6aa..7d9304d 100644 --- a/WorkData/WorkData.Web/ApiController/WeiXinShareController.cs +++ b/WorkData/WorkData.Web/ApiController/WeiXinShareController.cs @@ -1,15 +1,9 @@ using System; -using System.IdentityModel.Tokens.Jwt; using System.Linq; -using System.Security.Claims; -using System.Text; using Microsoft.AspNetCore.Mvc; -using Microsoft.IdentityModel.Tokens; +using WorkData.BaseWeb.Infrastructure; using WorkData.Code.Repositories; -using WorkData.Code.Webs.Infrastructure; using WorkData.Domain.WeiXin; -using WorkData.Util.Common.ExceptionExtensions; -using WorkData.Web.Models.OAuths; using WorkData.Web.Models.WeiXinShare; namespace WorkData.Web.ApiController @@ -20,18 +14,20 @@ public class WeiXinShareController : WorkDataBaseApiController private readonly IBaseRepository _baseRepository; private readonly IBaseRepository _weiXinUserInfoRepository; - public WeiXinShareController(IBaseRepository baseRepository, IBaseRepository weiXinUserInfoRepository) + public WeiXinShareController(IBaseRepository baseRepository, + IBaseRepository weiXinUserInfoRepository) { _baseRepository = baseRepository; _weiXinUserInfoRepository = weiXinUserInfoRepository; } /// - /// AccessToken + /// AccessToken /// /// /// - [HttpPost, Route("saveData")] + [HttpPost] + [Route("saveData")] public IActionResult SaveData([FromBody] WeiXinShareViewModel model) { if (DateTime.Now < Convert.ToDateTime("2018-08-31 23:59:59")) @@ -43,41 +39,44 @@ public IActionResult SaveData([FromBody] WeiXinShareViewModel model) var item = _baseRepository.GetAll() .FirstOrDefault(x => x.ShareOpenId == model.ShareOpenId && x.LikeOpenId == model.LikeOpenId); - if (item!=null) + if (item != null) return AsErrorJson("你已经点过赞了"); var share = _weiXinUserInfoRepository.GetAll().FirstOrDefault(x => x.OpenId == model.ShareOpenId); var like = _weiXinUserInfoRepository.GetAll().FirstOrDefault(x => x.OpenId == model.LikeOpenId); var weiXinShare = new WeiXinShare { - LikeOpenId= model.LikeOpenId, - LikeOpenNick= like?.NickName, - ShareOpenId= model.ShareOpenId, - ShareOpenNick= share?.NickName + LikeOpenId = model.LikeOpenId, + LikeOpenNick = like?.NickName, + ShareOpenId = model.ShareOpenId, + ShareOpenNick = share?.NickName }; - var entity= _baseRepository.Insert(weiXinShare); + var entity = _baseRepository.Insert(weiXinShare); return AsSuccessJson(entity); } /// - /// LoadMyLikeList + /// LoadMyLikeList /// /// - [HttpGet, Route("loadMyLikeList")] + [HttpGet] + [Route("loadMyLikeList")] public IActionResult LoadMyLikeList() { var shareOpenId = Request.Query["shareOpenId"]; - var data= _baseRepository.GetAll().Where(x => x.ShareOpenId == shareOpenId).Select(x=>x.LikeOpenId).ToList(); + var data = _baseRepository.GetAll().Where(x => x.ShareOpenId == shareOpenId).Select(x => x.LikeOpenId) + .ToList(); var weiXinUserInfoList = _weiXinUserInfoRepository.GetAll().Where(x => data.Contains(x.OpenId)).ToList(); return AsSuccessJson(weiXinUserInfoList); } /// - /// LikeRanking + /// LikeRanking /// /// - [HttpGet, Route("likeRanking")] + [HttpGet] + [Route("likeRanking")] public IActionResult LikeRanking() { var data = _baseRepository.GetAll(); @@ -93,11 +92,9 @@ into g g.Key.ShareOpenId, g.Key.ShareOpenNick, Count = g.Count() - }).OrderByDescending(x=>x.Count).Take(50).ToList(); + }).OrderByDescending(x => x.Count).Take(50).ToList(); return AsSuccessJson(item); } - - } } \ No newline at end of file diff --git a/WorkData/WorkData.Web/Config/appsettings.json b/WorkData/WorkData.Web/Config/appsettings.json index a7b8f22..f50d1fc 100644 --- a/WorkData/WorkData.Web/Config/appsettings.json +++ b/WorkData/WorkData.Web/Config/appsettings.json @@ -15,9 +15,9 @@ ] }, "WechatAppSettings": { - "AppId": "wx48e774b52c81e642", - "CorpSecret": "cdc78bc0dea70dd7c95d24584ee26320", - "Token": "QVLDny3Xmj78RiymG7RFca1Gx4Nq", + "AppId": "*", + "CorpSecret": "*", + "Token": "*", "CorpId": "", "EncodingAesKey": "", "AuthorizeUrl": "" diff --git a/WorkData/WorkData.Web/Config/hosting.json b/WorkData/WorkData.Web/Config/hosting.json index e1c7000..2c7b5f0 100644 --- a/WorkData/WorkData.Web/Config/hosting.json +++ b/WorkData/WorkData.Web/Config/hosting.json @@ -1,3 +1,3 @@ { - "server.urls": "http://+:80" + "server.urls": "http://+:8100" } \ No newline at end of file diff --git a/WorkData/WorkData.Web/HomeController.cs b/WorkData/WorkData.Web/HomeController.cs index 1886a94..d5f8467 100644 --- a/WorkData/WorkData.Web/HomeController.cs +++ b/WorkData/WorkData.Web/HomeController.cs @@ -11,19 +11,8 @@ #region -using System.Collections.Generic; -using System.Linq; using Microsoft.AspNetCore.Mvc; -using WorkData.Code.Entities; -using WorkData.Code.Repositories; -using WorkData.Code.ResponseExtensions; -using WorkData.Code.Webs.Infrastructure; -using WorkData.Domain; -using WorkData.Domain.Permissions.Users; -using WorkData.Domain.WeiXin; -using WorkData.EntityFramework.Extensions; -using WorkData.EntityFramework.Repositories; -using Z.EntityFramework.Plus; +using WorkData.BaseWeb.Infrastructure; #endregion @@ -37,6 +26,7 @@ public class HomeController : WorkDataBaseController /// public IActionResult Index() { + var s = WorkDataSession; return View(); } } diff --git a/WorkData/WorkData.Web/Program.cs b/WorkData/WorkData.Web/Program.cs index f76d76f..b9da963 100644 --- a/WorkData/WorkData.Web/Program.cs +++ b/WorkData/WorkData.Web/Program.cs @@ -17,6 +17,7 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using System.IO; +using Com.Ctrip.Framework.Apollo; using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; diff --git a/WorkData/WorkData.Web/Startup.cs b/WorkData/WorkData.Web/Startup.cs index ea9fac8..058a38c 100644 --- a/WorkData/WorkData.Web/Startup.cs +++ b/WorkData/WorkData.Web/Startup.cs @@ -13,7 +13,6 @@ using System; using System.Collections.Generic; -using System.Linq; using System.Security.Principal; using Autofac.Extensions.DependencyInjection; using Microsoft.AspNetCore.Builder; @@ -27,47 +26,33 @@ using Senparc.Weixin; using Senparc.Weixin.Entities; using Senparc.Weixin.RegisterServices; +using WorkData.BaseWeb; +using WorkData.BaseWeb.Extension; +using WorkData.BaseWeb.Filters; using WorkData.Code.AutoMappers; -using WorkData.Code.Entities; using WorkData.Code.JwtSecurityTokens; -using WorkData.Code.Sessions; -using WorkData.Code.Webs.Extension; -using WorkData.Code.Webs.Filters; -using WorkData.Code.Webs.WorkDataMiddlewares; -using WorkData.Dependency; using WorkData.Domain.EntityFramework.EntityFramework.Contexts; -using WorkData.Domain.EntityFramework.EntityFramework.Filters; using WorkData.EntityFramework; using WorkData.EntityFramework.Extensions; using WorkData.EntityFramework.Repositories.Filters.Configs; -using WorkData.Extensions.ServiceCollections; -using WorkData.Extensions.TypeFinders; using WorkData.WeiXin.Config; -using Z.EntityFramework.Plus; #endregion namespace WorkData.Web { - public class Startup + public class Startup: BaseStartup { - public Startup(IHostingEnvironment env) + public Startup(IHostingEnvironment env, IConfiguration configuration) : base(env, configuration) { - var builder = new ConfigurationBuilder() - .SetBasePath(env.ContentRootPath) + var builder = new ConfigurationBuilder(); + builder.SetBasePath(env.ContentRootPath) .AddJsonFile("Config/appsettings.json", true, true) .AddJsonFile($"Config/appsettings.{env.EnvironmentName}.json", true) .AddEnvironmentVariables(); Configuration = builder.Build(); } - /// - /// Gets a reference to the instance. - /// - public static Bootstrap BootstrapWarpper { get; } = Bootstrap.Instance(); - - public IConfigurationRoot Configuration { get; } - /// /// ConfigureServices /// @@ -83,7 +68,6 @@ public IServiceProvider ConfigureServices(IServiceCollection services) services.AddSingleton(); services.AddTransient(provider => provider.GetService().HttpContext?.User); - services.AddSingleton(); #region AutoMapper @@ -103,7 +87,7 @@ public IServiceProvider ConfigureServices(IServiceCollection services) { options.Filters.Add(typeof(WebUowFilter)); options.Filters.Add(typeof(WorkDataExpectionFilter)); - }); + }).AddControllersAsServices(); #endregion @@ -115,7 +99,7 @@ public IServiceProvider ConfigureServices(IServiceCollection services) #region Autofac - BootstrapWarpper.InitiateConfig(services, new List {"Config/moduleConfig.json"}); + BootstrapWarpper.InitiateConfig(new List {"Config/moduleConfig.json"}, services); #endregion @@ -125,11 +109,11 @@ public IServiceProvider ConfigureServices(IServiceCollection services) #endregion - services.AddMemoryCache();//使用本地缓存必须添加 - services.AddSession();//使用Session + services.AddMemoryCache(); //使用本地缓存必须添加 + services.AddSession(); //使用Session - services.AddSenparcGlobalServices(Configuration)//Senparc.CO2NET 全局注册 - .AddSenparcWeixinServices(Configuration);//Senparc.Weixin 注册 + services.AddSenparcGlobalServices(Configuration) //Senparc.CO2NET 全局注册 + .AddSenparcWeixinServices(Configuration); //Senparc.Weixin 注册 return new AutofacServiceProvider @@ -137,20 +121,19 @@ public IServiceProvider ConfigureServices(IServiceCollection services) } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IHostingEnvironment env, IOptions senparcSetting, IOptions senparcWeixinSetting) + public void Configure(IApplicationBuilder app, IHostingEnvironment env, IOptions senparcSetting, + IOptions senparcWeixinSetting) { if (env.IsDevelopment()) app.UseDeveloperExceptionPage(); - var register = RegisterService.Start(env, senparcSetting.Value).UseSenparcGlobal();// 启动 CO2NET 全局注册,必须! + var register = RegisterService.Start(env, senparcSetting.Value).UseSenparcGlobal(); // 启动 CO2NET 全局注册,必须! - register.UseSenparcWeixin(senparcWeixinSetting.Value, senparcSetting.Value);//微信全局注册,必须! + register.UseSenparcWeixin(senparcWeixinSetting.Value, senparcSetting.Value); //微信全局注册,必须! //静态资源 app.UseStaticFiles(); //启用验证 app.UseAuthentication(); - //Response - app.UseResponse(); //MVC app.UseMvc(routes => { diff --git a/WorkData/WorkData.Web/Views/Home/Index.cshtml b/WorkData/WorkData.Web/Views/Home/Index.cshtml index 0592473..2122910 100644 --- a/WorkData/WorkData.Web/Views/Home/Index.cshtml +++ b/WorkData/WorkData.Web/Views/Home/Index.cshtml @@ -21,7 +21,7 @@
-
生活点点滴滴
+
生活点点滴滴啊手动阀手动阀手动阀
diff --git a/WorkData/WorkData.Web/WechatController.cs b/WorkData/WorkData.Web/WechatController.cs index f7676d7..03085c4 100644 --- a/WorkData/WorkData.Web/WechatController.cs +++ b/WorkData/WorkData.Web/WechatController.cs @@ -1,7 +1,5 @@ using System; -using System.Collections.Generic; using System.Linq; -using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Senparc.CO2NET.Extensions; @@ -9,8 +7,8 @@ using Senparc.Weixin.MP.AdvancedAPIs; using Senparc.Weixin.MP.Entities.Request; using Senparc.Weixin.MP.Helpers; +using WorkData.BaseWeb.Infrastructure; using WorkData.Code.Repositories; -using WorkData.Code.Webs.Infrastructure; using WorkData.Dependency; using WorkData.Domain.WeiXin; using WorkData.Web.Models.WeiXinShare; @@ -21,40 +19,39 @@ namespace WorkData.Web { public class WechatController : WorkDataBaseController { - public WechatAppSettings WechatAppSettings => IocManager.Instance.ResolveServiceValue(); private readonly ILocalAuthenticationService _authSrv; private readonly IBaseRepository _baseRepository; + public WechatController( - ILocalAuthenticationService authSrv, IBaseRepository baseRepository) + ILocalAuthenticationService authSrv, IBaseRepository baseRepository) { _authSrv = authSrv; _baseRepository = baseRepository; } + public WechatAppSettings WechatAppSettings => IocManager.Instance.ResolveServiceValue(); + /// - ///验证回调地址 + /// 验证回调地址 /// - [HttpGet, ActionName("WeiXinCallBackHandler")] + [HttpGet] + [ActionName("WeiXinCallBackHandler")] public IActionResult VerifyCallBackUrl(PostModel postModel, string echostr) { if (_authSrv.VerifyCallBackUrl(postModel, echostr)) - { return Content(echostr); //返回随机字符串则表示验证通过 - } - else - { - return Content("failed:" + postModel.Signature + "," + - Senparc.Weixin.MP.CheckSignature.GetSignature(postModel.Timestamp, postModel.Nonce, - WechatAppSettings.Token) + "。" + - "如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。"); - } + return Content("failed:" + postModel.Signature + "," + + CheckSignature.GetSignature(postModel.Timestamp, postModel.Nonce, + WechatAppSettings.Token) + "。" + + "如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。"); } /// - /// 处理微信回调 + /// 处理微信回调 /// /// - [HttpPost, ActionName("WeiXinCallBackHandler")] + [HttpPost] + [ActionName("WeiXinCallBackHandler")] public IActionResult CallbackHandle(PostModel postModel) { _authSrv.CallbackHandle(postModel); @@ -62,8 +59,9 @@ public IActionResult CallbackHandle(PostModel postModel) } #region 微信OAuth授权回调地址 AuthorizeUrl(string code, string state, string rurl) + /// - /// 授权并跳转 + /// 授权并跳转 /// /// 用户同意授权后,返回的code,用于获取access_token获取用户信息 /// state参数,这里传递公众号id @@ -81,13 +79,13 @@ public IActionResult AuthorizeUrl(string code, string state, string returnUrl) #endregion 微信OAuth授权回调地址 AuthorizeUrl(string code, string state, string rurl) /// - /// ShareAuthorizeUrl + /// ShareAuthorizeUrl /// /// /// public IActionResult ShareAuthorizeUrl(string reurnUrl) { - var state = "JeffreySu-" + DateTime.Now.Millisecond;//随机数,用于识别请求可靠性 + var state = "JeffreySu-" + DateTime.Now.Millisecond; //随机数,用于识别请求可靠性 var url = OAuthApi.GetAuthorizeUrl(WechatAppSettings.AppId, "http://www.mblogs.top/Wechat/AuthorizeUrl?returnUrl=" + reurnUrl.UrlEncode(), state, OAuthScope.snsapi_userinfo); @@ -96,7 +94,7 @@ public IActionResult ShareAuthorizeUrl(string reurnUrl) } /// - /// 分享 + /// 分享 /// /// public IActionResult Share() @@ -111,9 +109,7 @@ public IActionResult Share() else { if (!string.IsNullOrWhiteSpace(shareId)) - { shareEnum = openId != shareId ? ShareEnum.分享点赞 : ShareEnum.分享无法点赞; - } } var reurnUrl = "http://www.mblogs.top/Wechat/Share?shareid=" + openId; @@ -122,17 +118,18 @@ public IActionResult Share() { OpenId = openId, ShareId = shareId, - Url =$"http://www.mblogs.top/Wechat/ShareAuthorizeUrl?reurnUrl="+ reurnUrl + Url = "http://www.mblogs.top/Wechat/ShareAuthorizeUrl?reurnUrl=" + reurnUrl }; ViewBag.WeiXinShareLike = model; ViewBag.ShareEnum = shareEnum; - var jssdkUiPackage = JSSDKHelper.GetJsSdkUiPackage(WechatAppSettings.AppId, WechatAppSettings.CorpSecret, Request.AbsoluteUri()); + var jssdkUiPackage = JSSDKHelper.GetJsSdkUiPackage(WechatAppSettings.AppId, WechatAppSettings.CorpSecret, + Request.AbsoluteUri()); return View(jssdkUiPackage); } /// - /// 排行榜 + /// 排行榜 /// /// public IActionResult Ranking() @@ -147,12 +144,12 @@ public IActionResult Ranking() into g select new RankingViewModel { - ShareOpenId= g.Key.ShareOpenId, - ShareOpenNick=g.Key.ShareOpenNick, + ShareOpenId = g.Key.ShareOpenId, + ShareOpenNick = g.Key.ShareOpenNick, Count = g.Count() }).OrderByDescending(x => x.Count).ToList(); return View(item); } } -} +} \ No newline at end of file diff --git a/WorkData/WorkData.Web/WorkData.Web.csproj b/WorkData/WorkData.Web/WorkData.Web.csproj index c6d17ec..4410995 100644 --- a/WorkData/WorkData.Web/WorkData.Web.csproj +++ b/WorkData/WorkData.Web/WorkData.Web.csproj @@ -23,6 +23,7 @@ + @@ -32,6 +33,7 @@ + diff --git a/WorkData/WorkData.Web/WorkDataWebModule.cs b/WorkData/WorkData.Web/WorkDataWebModule.cs index 157e9e7..92defbd 100644 --- a/WorkData/WorkData.Web/WorkDataWebModule.cs +++ b/WorkData/WorkData.Web/WorkDataWebModule.cs @@ -11,15 +11,43 @@ using Autofac; using Microsoft.AspNetCore.Identity; +using System.Security.Claims; +using System.Security.Principal; +using Microsoft.EntityFrameworkCore.Internal; +using WorkData.BaseWeb.Infrastructure; +using WorkData.Code.Sessions; using WorkData.Domain.Permissions.Users; using WorkData.Extensions.Modules; +using WorkData.Extensions.TypeFinders; +using WorkData.Web.ApiController; namespace WorkData.Web { public class WorkDataWebModule : WorkDataBaseModule { + private readonly ITypeFinder _typeFinder; + + public WorkDataWebModule() + { + _typeFinder = NullTypeFinder.Instance; + } + protected override void Load(ContainerBuilder builder) { + var workDataBaseControllers = _typeFinder.FindClassesOfType(); + if (workDataBaseControllers.Any()) + { + foreach (var workDataBaseController in workDataBaseControllers) + { + builder.RegisterType(workDataBaseController).OnActivating(x => + { + var instance = x.Instance as WorkDataBaseController; + instance.WorkDataSession = x.Context.Resolve(); + instance.ClaimsPrincipal = x.Context.Resolve() as ClaimsPrincipal; + }); + } + } + builder.RegisterType>() .AsSelf().InstancePerRequest(); } diff --git a/WorkData/WorkData.WeiXin/Config/WechatAppSettings.cs b/WorkData/WorkData.WeiXin/Config/WechatAppSettings.cs index 89dfe55..d048a1d 100644 --- a/WorkData/WorkData.WeiXin/Config/WechatAppSettings.cs +++ b/WorkData/WorkData.WeiXin/Config/WechatAppSettings.cs @@ -1,10 +1,10 @@ // ------------------------------------------------------------------------------ -// Copyright 成都积微物联电子商务有限公司 版权所有。 -// 项目名:Jwell.Wechat.Common +// Copyright 成都积微物联电子商务有限公司 版权所有。 +// 项目名:Jwell.Wechat.Common // 文件名:WechatAppSettings.cs // 创建标识:吴来伟 2017-03-16 // 创建描述: -// +// // 修改标识: // 修改描述: // ------------------------------------------------------------------------------ diff --git a/WorkData/WorkData.WeiXin/Impl/LocalAuthenticationService.cs b/WorkData/WorkData.WeiXin/Impl/LocalAuthenticationService.cs index 435a6f4..705e11a 100644 --- a/WorkData/WorkData.WeiXin/Impl/LocalAuthenticationService.cs +++ b/WorkData/WorkData.WeiXin/Impl/LocalAuthenticationService.cs @@ -4,9 +4,7 @@ using Senparc.Weixin.MP.AdvancedAPIs.OAuth; using Senparc.Weixin.MP.Entities.Request; using System; -using System.Collections.Generic; using System.Linq; -using System.Text; using WorkData.Code.Repositories; using WorkData.Dependency; using WorkData.Domain.WeiXin; @@ -20,6 +18,7 @@ public class LocalAuthenticationService : ILocalAuthenticationService public WechatAppSettings WechatAppSettings => IocManager.Instance.ResolveServiceValue(); private readonly IBaseRepository _baseRepository; + public LocalAuthenticationService(IBaseRepository baseRepository) { _baseRepository = baseRepository; @@ -39,7 +38,7 @@ public string Authorize(string code, string returnUrl) WechatAppSettings.CorpSecret, code); - if (oAuthAccessTokenResult==null) + if (oAuthAccessTokenResult == null) throw new Exception("错误消息:oAuthAccessTokenResult为空"); if (oAuthAccessTokenResult != null @@ -55,7 +54,7 @@ public string Authorize(string code, string returnUrl) ); var item = _baseRepository.GetAll().FirstOrDefault(x => x .OpenId == userInfo.openid); - if (item==null) + if (item == null) { var model = new WeiXinUserInfo { @@ -80,7 +79,6 @@ public string Authorize(string code, string returnUrl) returnUrl = returnUrl + "?access_token=" + oAuthAccessTokenResult.access_token + "&openid=" + oAuthAccessTokenResult.openid; } - return returnUrl; } @@ -115,4 +113,4 @@ public bool VerifyCallBackUrl(PostModel postModel, string echostr) return CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, WechatAppSettings.Token); } } -} +} \ No newline at end of file diff --git a/WorkData/WorkData.WeiXin/Interface/ILocalAuthenticationService.cs b/WorkData/WorkData.WeiXin/Interface/ILocalAuthenticationService.cs index 0d3c408..d0b5a19 100644 --- a/WorkData/WorkData.WeiXin/Interface/ILocalAuthenticationService.cs +++ b/WorkData/WorkData.WeiXin/Interface/ILocalAuthenticationService.cs @@ -1,7 +1,4 @@ using Senparc.Weixin.MP.Entities.Request; -using System; -using System.Collections.Generic; -using System.Text; namespace WorkData.WeiXin.Interface { @@ -19,11 +16,10 @@ public interface ILocalAuthenticationService /// /// bool CallbackHandle(PostModel postModel); - + /// /// Authorize /// string Authorize(string code, string returnUrl); - } -} +} \ No newline at end of file diff --git a/WorkData/WorkData.WeiXin/WechatModule.cs b/WorkData/WorkData.WeiXin/WechatModule.cs index 016e374..952082d 100644 --- a/WorkData/WorkData.WeiXin/WechatModule.cs +++ b/WorkData/WorkData.WeiXin/WechatModule.cs @@ -6,7 +6,7 @@ namespace WorkData.WeiXin { /// - /// Wechat + /// Wechat /// public class WechatModule : WorkDataBaseModule { diff --git a/WorkData/WorkData.sln b/WorkData/WorkData.sln index 8e0457e..fbd9e95 100644 --- a/WorkData/WorkData.sln +++ b/WorkData/WorkData.sln @@ -43,6 +43,14 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkData.Util.Redis", "Work EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Util", "Util", "{DF6ACD6E-39D5-4E05-AE40-B4220801D2A5}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkData.Apollo", "WorkData.Apollo\WorkData.Apollo.csproj", "{3FA51F9B-7AFA-4882-9561-EE6D9696F7B9}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkData.ApolloWeb", "WorkData.ApolloWeb\WorkData.ApolloWeb.csproj", "{C0FF5BA5-E6AC-483C-8ADC-ECB52EB23407}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WorkData.BaseWeb", "WorkData.BaseWeb\WorkData.BaseWeb.csproj", "{BF4F784B-2AC4-470D-A02C-0C5623563759}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WorkData.AutofacServiceLocator", "WorkData.AutofacServiceLocator\WorkData.AutofacServiceLocator.csproj", "{DDBC899C-5C43-4DDF-92BD-54DE5F47868A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -105,6 +113,22 @@ Global {B680DB85-3AA3-4356-89A9-5609A08044DE}.Debug|Any CPU.Build.0 = Debug|Any CPU {B680DB85-3AA3-4356-89A9-5609A08044DE}.Release|Any CPU.ActiveCfg = Release|Any CPU {B680DB85-3AA3-4356-89A9-5609A08044DE}.Release|Any CPU.Build.0 = Release|Any CPU + {3FA51F9B-7AFA-4882-9561-EE6D9696F7B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3FA51F9B-7AFA-4882-9561-EE6D9696F7B9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3FA51F9B-7AFA-4882-9561-EE6D9696F7B9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3FA51F9B-7AFA-4882-9561-EE6D9696F7B9}.Release|Any CPU.Build.0 = Release|Any CPU + {C0FF5BA5-E6AC-483C-8ADC-ECB52EB23407}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C0FF5BA5-E6AC-483C-8ADC-ECB52EB23407}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C0FF5BA5-E6AC-483C-8ADC-ECB52EB23407}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C0FF5BA5-E6AC-483C-8ADC-ECB52EB23407}.Release|Any CPU.Build.0 = Release|Any CPU + {BF4F784B-2AC4-470D-A02C-0C5623563759}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BF4F784B-2AC4-470D-A02C-0C5623563759}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BF4F784B-2AC4-470D-A02C-0C5623563759}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BF4F784B-2AC4-470D-A02C-0C5623563759}.Release|Any CPU.Build.0 = Release|Any CPU + {DDBC899C-5C43-4DDF-92BD-54DE5F47868A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DDBC899C-5C43-4DDF-92BD-54DE5F47868A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DDBC899C-5C43-4DDF-92BD-54DE5F47868A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DDBC899C-5C43-4DDF-92BD-54DE5F47868A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -124,6 +148,10 @@ Global {A2F33428-88C7-4A3D-B048-36E33799314C} = {4B8B3C31-7B47-4408-A0FD-04C7DA47B3F7} {B7786B3D-A5C3-4DAD-ADCC-A29940736312} = {969CD4D3-847B-44D5-9807-143C1285D99F} {B680DB85-3AA3-4356-89A9-5609A08044DE} = {DF6ACD6E-39D5-4E05-AE40-B4220801D2A5} + {3FA51F9B-7AFA-4882-9561-EE6D9696F7B9} = {969CD4D3-847B-44D5-9807-143C1285D99F} + {C0FF5BA5-E6AC-483C-8ADC-ECB52EB23407} = {F6229AFA-61EA-4831-ABE1-76026EA8906A} + {BF4F784B-2AC4-470D-A02C-0C5623563759} = {969CD4D3-847B-44D5-9807-143C1285D99F} + {DDBC899C-5C43-4DDF-92BD-54DE5F47868A} = {562C99F1-D787-4B87-9FDB-2F2B72DFB2F9} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {F9266943-75A9-4A67-B86D-6BBBD704A1F7} diff --git a/WorkData/WorkData/Bootstrap.cs b/WorkData/WorkData/Bootstrap.cs index a53b126..1de5f4a 100644 --- a/WorkData/WorkData/Bootstrap.cs +++ b/WorkData/WorkData/Bootstrap.cs @@ -19,7 +19,6 @@ using System; using System.Collections.Generic; using WorkData.Dependency; -using WorkData.Extensions.Modules; #endregion @@ -40,19 +39,7 @@ public class Bootstrap /// public IIocManager IocManager { get; set; } - /// - /// StartupModule - /// - public Type StartupModule { get; set; } - - /// - /// Instance - /// - /// - public static Bootstrap Instance() where TStartupModule : WorkDataBaseModule - { - return new Bootstrap(typeof(TStartupModule)); - } + #region Instance /// /// instance bootstrap @@ -70,13 +57,6 @@ public Bootstrap() : this(Dependency.IocManager.Instance) { } - /// - /// Bootstrap - /// - public Bootstrap(Type startupModule) : this(startupModule, Dependency.IocManager.Instance) - { - } - /// /// Bootstrap /// @@ -86,58 +66,24 @@ public Bootstrap(IIocManager iocManager) IocManager = iocManager; } - /// - /// Bootstrap - /// - /// - /// - public Bootstrap(Type startupModule, IIocManager iocManager) - { - StartupModule = startupModule; - IocManager = iocManager; - } + #endregion + + #region 初始化集成框架(Core) /// - /// 初始化集成框架(配置方式) + /// 初始化集成框架(Core) /// [STAThread] - public void InitiateConfig(IServiceCollection services, List paths) + public void InitiateConfig(List paths, IServiceCollection services) { if (_isInit) return; var builder = new ContainerBuilder(); - - //初始化IServiceCollection - IocManager.SetServiceCollection(services); - builder.Populate(services); - - #region RegisterConfig - var config = new ConfigurationBuilder(); - config.SetBasePath(AppDomain.CurrentDomain.BaseDirectory); - if (paths != null) + if (services != null) { - foreach (var item in paths) - { - config.AddJsonFile(item); - } + //初始化IServiceCollection + IocManager.SetServiceCollection(services); + builder.Populate(services); } - var module = new ConfigurationModule(config.Build()); - builder.RegisterModule(module); - #endregion - - //注入初始module - builder.RegisterModule(new WorkDataModule()); - IocManager.SetContainer(builder); - _isInit = true; - } - - /// - /// InitiateConfig - /// - /// - public void InitiateConfig(List paths) - { - if (_isInit) return; - var builder = new ContainerBuilder(); #region RegisterConfig var config = new ConfigurationBuilder(); @@ -149,29 +95,16 @@ public void InitiateConfig(List paths) config.AddJsonFile(item); } } - var module = new ConfigurationModule(config.Build()); builder.RegisterModule(module); - #endregion //注入初始module builder.RegisterModule(new WorkDataModule()); - IocManager.SetContainer(builder); _isInit = true; } - /// - /// UpdateContainer - /// - /// - [Obsolete("Containers should generally be considered immutable. Register all of your dependencies before building/resolving. If you need to change the contents of a container, you technically should rebuild the container. This method may be removed in a future major release.")] - public void CoreUpdateContainer(IServiceCollection services) - { - var builder = new ContainerBuilder(); - builder.Populate(services); - IocManager.UpdateContainer(builder); - } + #endregion } } \ No newline at end of file diff --git a/WorkData/WorkData/Dependency/IIocManager.cs b/WorkData/WorkData/Dependency/IIocManager.cs index d68a16f..da39590 100644 --- a/WorkData/WorkData/Dependency/IIocManager.cs +++ b/WorkData/WorkData/Dependency/IIocManager.cs @@ -14,13 +14,12 @@ using Autofac; using CommonServiceLocator; using Microsoft.Extensions.DependencyInjection; -using System; #endregion namespace WorkData.Dependency { - public interface IIocManager : IResolver, IRegistrar, IServiceCollectionResolve + public interface IIocManager : IServiceCollectionResolve { /// /// Reference to the Autofac Container. @@ -43,12 +42,5 @@ public interface IIocManager : IResolver, IRegistrar, IServiceCollectionResolve /// /// void SetServiceCollection(IServiceCollection serviceCollection); - - /// - /// UpdateContainer - /// - /// - [Obsolete("Containers should generally be considered immutable. Register all of your dependencies before building/resolving. If you need to change the contents of a container, you technically should rebuild the container. This method may be removed in a future major release.")] - void UpdateContainer(ContainerBuilder containerBuilder); } } \ No newline at end of file diff --git a/WorkData/WorkData/Dependency/IRegistrar.cs b/WorkData/WorkData/Dependency/IRegistrar.cs deleted file mode 100644 index d72517c..0000000 --- a/WorkData/WorkData/Dependency/IRegistrar.cs +++ /dev/null @@ -1,23 +0,0 @@ -// ------------------------------------------------------------------------------ -// Copyright 吴来伟个人 版权所有。 -// 项目名:WorkData -// 文件名:IRegistrar.cs -// 创建标识:吴来伟 2017-11-24 18:00 -// 创建描述: -// -// 修改标识:吴来伟2017-11-24 18:00 -// 修改描述: -// ------------------------------------------------------------------------------ - -using Autofac; - -namespace WorkData.Dependency -{ - public interface IRegistrar - { - /// - /// Reference to the Autofac Container. - /// - ContainerBuilder ContainerBuilder { get; set; } - } -} \ No newline at end of file diff --git a/WorkData/WorkData/Dependency/IResolver.cs b/WorkData/WorkData/Dependency/IResolver.cs deleted file mode 100644 index db3f71e..0000000 --- a/WorkData/WorkData/Dependency/IResolver.cs +++ /dev/null @@ -1,87 +0,0 @@ -// ------------------------------------------------------------------------------ -// Copyright 吴来伟个人 版权所有。 -// 项目名:WorkData -// 文件名:IResolver.cs -// 创建标识:吴来伟 2017-11-23 11:37 -// 创建描述: -// -// 修改标识:吴来伟2017-11-23 11:41 -// 修改描述: -// ------------------------------------------------------------------------------ - -#region - -using Autofac; -using Autofac.Core; -using System; -using System.Collections.Generic; - -#endregion - -namespace WorkData.Dependency -{ - public interface IResolver - { - /// - /// Resolves this instance. - /// - /// - /// - T Resolve(ILifetimeScope scope = null); - - /// - /// Determines whether this instance is registered. - /// - /// - /// - /// true if this instance is registered; otherwise, false. - /// - bool IsRegistered() where T : class; - - /// - /// Determines whether the specified type is registered. - /// - /// The type. - /// The ILifetimeScope - /// - /// true if the specified type is registered; otherwise, false. - /// - bool IsRegistered(Type type, ILifetimeScope scope = null); - - /// - /// Releases a pre-resolved object. See Resolve methods. - /// - /// Object to be released - void Release(object obj); - - /// - /// Resolve - /// - /// - /// - /// - /// - T Resolve(IEnumerable parameters, ILifetimeScope scope = null); - - /// - /// Resolve - /// - /// - /// - /// - T ResolveParameter(params Parameter[] parameters); - - /// - /// Resolve - /// - /// - /// - T ResolveName(string name); - - /// - /// Resolve - /// - /// - object Resolve(Type type); - } -} \ No newline at end of file diff --git a/WorkData/WorkData/Dependency/IServiceCollectionResolve.cs b/WorkData/WorkData/Dependency/IServiceCollectionResolve.cs index e81444f..65fa86d 100644 --- a/WorkData/WorkData/Dependency/IServiceCollectionResolve.cs +++ b/WorkData/WorkData/Dependency/IServiceCollectionResolve.cs @@ -9,6 +9,7 @@ // 修改描述: // ------------------------------------------------------------------------------ +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; namespace WorkData.Dependency @@ -17,6 +18,10 @@ public interface IServiceCollectionResolve { IServiceCollection ServiceCollection { get; set; } - T ResolveServiceValue() where T : class, new(); + T ResolveServiceValue(string key); + + T ResolveEntityServiceValue(string key) where T : class; + + T ResolveServiceValue() where T : class, new(); } } \ No newline at end of file diff --git a/WorkData/WorkData/Dependency/IocManager.cs b/WorkData/WorkData/Dependency/IocManager.cs index 113e9ab..43d17ad 100644 --- a/WorkData/WorkData/Dependency/IocManager.cs +++ b/WorkData/WorkData/Dependency/IocManager.cs @@ -12,12 +12,9 @@ #region using Autofac; -using Autofac.Core; using Autofac.Extras.CommonServiceLocator; using CommonServiceLocator; using Microsoft.Extensions.DependencyInjection; -using System; -using System.Collections.Generic; using WorkData.Extensions.ServiceCollections; #endregion @@ -29,27 +26,21 @@ namespace WorkData.Dependency /// public class IocManager : IIocManager { + #region Instance + /// /// The Singleton instance. /// public static IocManager Instance { get; } - #region ContainerBuilder - /// - /// ContainerBuilder + /// IocManager /// - ContainerBuilder IRegistrar.ContainerBuilder + static IocManager() { - get => ContainerBuilder; - set => ContainerBuilder = value; + Instance = new IocManager(); } - /// - /// ContainerBuilder - /// - public static ContainerBuilder ContainerBuilder { get; set; } - #endregion #region IContainer @@ -100,21 +91,12 @@ IServiceCollection IServiceCollectionResolve.ServiceCollection #endregion - /// - /// IocManager - /// - static IocManager() - { - Instance = new IocManager(); - } - /// /// SetContainer /// /// public void SetContainer(ContainerBuilder containerBuilder) { - ContainerBuilder = containerBuilder; var container = containerBuilder.Build(); IocContainer = container; @@ -122,6 +104,8 @@ public void SetContainer(ContainerBuilder containerBuilder) ServiceLocatorCurrent = new AutofacServiceLocator(IocContainer); } + #region serviceCollection + /// /// SetServiceCollection /// @@ -132,134 +116,37 @@ public void SetServiceCollection(IServiceCollection serviceCollection) } /// - /// UpdateContainer - /// - /// - [Obsolete("Containers should generally be considered immutable. Register all of your dependencies before building/resolving. If you need to change the contents of a container, you technically should rebuild the container. This method may be removed in a future major release.")] - public void UpdateContainer(ContainerBuilder containerBuilder) - { - ContainerBuilder = containerBuilder; - containerBuilder?.Update(IocContainer); - } - - /// - /// resolve T by lifetime scope - /// - /// - /// - /// - public T Resolve(ILifetimeScope scope = null) - { - if (scope == null) - { - scope = Scope(); - } - return scope.Resolve(); - } - - /// - /// Resolve - /// - /// - /// - /// - /// - public T Resolve(IEnumerable parameters, ILifetimeScope scope = null) - { - if (scope == null) - { - scope = Scope(); - } - return scope.Resolve(parameters); - } - - /// - /// Resolve - /// - /// - /// - /// - public T ResolveParameter(Parameter[] parameters) - { - var scope = Scope(); - return scope.Resolve(parameters); - } - - /// - /// ResolveName + /// ResolveServiceValue /// /// /// - public T ResolveName(string name) - { - var scope = Scope(); - var item = scope.ResolveNamed(name); - return item; - } - - /// - /// - /// - /// - /// - public object Resolve(Type type) + public T ResolveServiceValue() where T : class, new() { - var scope = Scope(); - var item = scope.Resolve(type); - return item; + return ServiceCollection.ResolveServiceValue(); } /// - /// IsRegistered + /// ResolveServiceValue /// /// + /// /// - public bool IsRegistered() where T : class - { - return IsRegistered(typeof(T)); - } - - /// - /// IsRegistered - /// - /// - /// - /// - public bool IsRegistered(Type type, ILifetimeScope scope = null) - { - if (scope == null) - { - scope = Scope(); - } - - return scope.IsRegistered(type); - } - - /// - /// release object lifetimescope - /// - /// - public void Release(object obj) + public T ResolveServiceValue(string key) { - } - - /// - /// create ILifetimeScope from container - /// - /// - private static ILifetimeScope Scope() - { - return IocContainer.BeginLifetimeScope(); + return ServiceCollection.ResolveConfig(key); } /// /// ResolveServiceValue /// /// + /// /// - public T ResolveServiceValue() where T : class, new() + public T ResolveEntityServiceValue(string key) where T : class { - return ServiceCollection.ResolveServiceValue(); + return ServiceCollection.ResolveEntityConfig(key); } + + #endregion } } \ No newline at end of file diff --git a/WorkData/WorkData/Extensions/Modules/WorkDataBaseModule.cs b/WorkData/WorkData/Extensions/Modules/WorkDataBaseModule.cs index d46e936..27c8ec7 100644 --- a/WorkData/WorkData/Extensions/Modules/WorkDataBaseModule.cs +++ b/WorkData/WorkData/Extensions/Modules/WorkDataBaseModule.cs @@ -16,9 +16,5 @@ namespace WorkData.Extensions.Modules { public abstract class WorkDataBaseModule : Module { - /// - /// Gets a reference to the IOC manager. - /// - public IIocManager IocManager { get; set; } } } \ No newline at end of file diff --git a/WorkData/WorkData/Extensions/ServiceCollections/WorkDataServiceCollection.cs b/WorkData/WorkData/Extensions/ServiceCollections/WorkDataServiceCollection.cs index a65c28c..a821c90 100644 --- a/WorkData/WorkData/Extensions/ServiceCollections/WorkDataServiceCollection.cs +++ b/WorkData/WorkData/Extensions/ServiceCollections/WorkDataServiceCollection.cs @@ -9,8 +9,10 @@ // 修改描述: // ------------------------------------------------------------------------------ +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; +using Newtonsoft.Json; using System; namespace WorkData.Extensions.ServiceCollections @@ -30,5 +32,40 @@ public static class WorkDataServiceCollection return default(T); } } + + public static T ResolveEntityConfig(this IServiceCollection services, string key) where T : class + { + var provider = services.BuildServiceProvider(); + var configuration = provider.GetService(); + if (configuration == null) + throw new NullReferenceException("IConfiguration is null"); + + try + { + var data = configuration.GetValue(key); + return JsonConvert.DeserializeObject(data); + } + catch (Exception) + { + return default(T); + } + } + + public static T ResolveConfig(this IServiceCollection services, string key) + { + var provider = services.BuildServiceProvider(); + var configuration = provider.GetService(); + if (configuration == null) + throw new NullReferenceException("IConfiguration is null"); + + try + { + return configuration.GetValue(key); + } + catch (Exception) + { + return default(T); + } + } } } \ No newline at end of file diff --git a/WorkData/WorkData/WorkDataModule.cs b/WorkData/WorkData/WorkDataModule.cs index 0c4ddfb..8394652 100644 --- a/WorkData/WorkData/WorkDataModule.cs +++ b/WorkData/WorkData/WorkDataModule.cs @@ -13,6 +13,7 @@ using Autofac; using WorkData.Dependency; +using WorkData.Extensions.TypeFinders; #endregion @@ -23,9 +24,9 @@ public class WorkDataModule : Module protected override void Load(ContainerBuilder builder) { builder.RegisterType() - .As(); + .As(); - //builder.RegisterType().As(); + builder.RegisterType().As(); } } } \ No newline at end of file diff --git a/WorkData/WorkDataEs/Program.cs b/WorkData/WorkDataEs/Program.cs index 0d0ea5c..adac436 100644 --- a/WorkData/WorkDataEs/Program.cs +++ b/WorkData/WorkDataEs/Program.cs @@ -2,7 +2,9 @@ using System.Collections.Generic; using System.Linq.Expressions; using WorkData; +using WorkData.Dependency; using WorkData.ElasticSearch.Config; +using WorkData.Extensions.TypeFinders; using WorkDataEs.WorkDataElasticSearchs.Contents; using WorkDataEs.WorkDataElasticSearchs.Contents.Dto; @@ -26,13 +28,14 @@ private static void Main(string[] args) "Config/moduleConfig.json", "Config/commonConfig.json" }; - BootstrapWarpper.InitiateConfig(paths); + BootstrapWarpper.InitiateConfig(paths,null); #endregion 初始化 //初始化service - var service = BootstrapWarpper.IocManager.Resolve(); - + var service = IocManager.ServiceLocatorCurrent.GetInstance(); + //初始化service + var service1 = IocManager.ServiceLocatorCurrent.GetInstance(); //初始化预置数据 Contents = InitData(); //赋值 diff --git a/WorkData/Workdata.UnitTest/BaseUnitTest.cs b/WorkData/Workdata.UnitTest/BaseUnitTest.cs index d155d20..afdb5a1 100644 --- a/WorkData/Workdata.UnitTest/BaseUnitTest.cs +++ b/WorkData/Workdata.UnitTest/BaseUnitTest.cs @@ -71,7 +71,7 @@ public BaseUnitTest() "Config/moduleConfig.json" }; - BootstrapWarpper.InitiateConfig(ServiceCollection, paths); + BootstrapWarpper.InitiateConfig(paths, ServiceCollection); #endregion } } diff --git a/WorkData/Workdata.UnitTest/EntityFramework/RepositoryUnitTest.cs b/WorkData/Workdata.UnitTest/EntityFramework/RepositoryUnitTest.cs index 82fb864..3d9e63a 100644 --- a/WorkData/Workdata.UnitTest/EntityFramework/RepositoryUnitTest.cs +++ b/WorkData/Workdata.UnitTest/EntityFramework/RepositoryUnitTest.cs @@ -33,9 +33,9 @@ public class RepositoryUnitTest : BaseUnitTest /// public RepositoryUnitTest() { - _unitOfWorkManager = IocManager.Instance.Resolve(); - _baseUserRepository = IocManager.Instance.Resolve>(); - var workDataSession = IocManager.Instance.Resolve(); + _unitOfWorkManager = IocManager.ServiceLocatorCurrent.GetInstance(); + _baseUserRepository = IocManager.ServiceLocatorCurrent.GetInstance>(); + var workDataSession = IocManager.ServiceLocatorCurrent.GetInstance(); } [Fact] diff --git a/WorkData/Workdata.UnitTest/EntityFramework/UnitOfWorkUnitTest.cs b/WorkData/Workdata.UnitTest/EntityFramework/UnitOfWorkUnitTest.cs index 94d105f..c50b554 100644 --- a/WorkData/Workdata.UnitTest/EntityFramework/UnitOfWorkUnitTest.cs +++ b/WorkData/Workdata.UnitTest/EntityFramework/UnitOfWorkUnitTest.cs @@ -22,7 +22,7 @@ public class UnitOfWorkUnitTest : BaseUnitTest public UnitOfWorkUnitTest() { - _unitOfWorkManager = IocManager.Instance.Resolve(); + _unitOfWorkManager = IocManager.ServiceLocatorCurrent.GetInstance(); } [Fact] diff --git a/WorkData/Workdata.UnitTest/TypeFinders/TypeFinderUnitTest.cs b/WorkData/Workdata.UnitTest/TypeFinders/TypeFinderUnitTest.cs index 9cae42e..ee6ad38 100644 --- a/WorkData/Workdata.UnitTest/TypeFinders/TypeFinderUnitTest.cs +++ b/WorkData/Workdata.UnitTest/TypeFinders/TypeFinderUnitTest.cs @@ -21,7 +21,7 @@ public class TypeFinderUnitTest : BaseUnitTest public TypeFinderUnitTest() { - _typeFinder = IocManager.Instance.Resolve(); + _typeFinder = IocManager.ServiceLocatorCurrent.GetInstance(); } [Fact]