框架重构

清除多余的业务
This commit is contained in:
橙子
2022-04-03 23:21:53 +08:00
parent f5fb2ea17b
commit f0d32af3c3
936 changed files with 213647 additions and 86 deletions

View File

@@ -15,7 +15,6 @@ namespace Yi.Framework.ApiMicroservice.Controllers
{
[ApiController]
[Route("api/[controller]/[action]")]
[Authorize]
public class UserController : ControllerBase
{
private readonly ILogger<UserController> _logger;
@@ -32,5 +31,10 @@ namespace Yi.Framework.ApiMicroservice.Controllers
{
return Result.Success().SetData(await _iUserService.GetListAsync());
}
[HttpPost]
public async Task<Result> Add(UserEntity userEntity)
{
return Result.Success().SetData(await _iUserService.InsertAsync(userEntity));
}
}
}

View File

@@ -5,9 +5,12 @@ using Yi.Framework.WebCore.MiddlewareExtend;
using Yi.Framework.WebCore.Utility;
using Autofac;
using Yi.Framework.Common.Models;
using Yi.Framework.Language;
using Microsoft.Extensions.Localization;
var builder = WebApplication.CreateBuilder(args);
builder.Configuration.AddCommandLine(args);
builder.WebHost.UseUrls(builder.Configuration.GetValue<string>("StartUrl"));
builder.Host.ConfigureAppConfiguration((hostBuilderContext, configurationBuilder) =>
{
configurationBuilder.AddCommandLine(args);
@@ -29,7 +32,8 @@ builder.Host.ConfigureLogging(loggingBuilder =>
{
loggingBuilder.AddFilter("System", Microsoft.Extensions.Logging.LogLevel.Warning);
loggingBuilder.AddFilter("Microsoft", Microsoft.Extensions.Logging.LogLevel.Warning);
loggingBuilder.AddLog4Net();
loggingBuilder.AddLog4Net("./Config/Log4net.config");
});
#region
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -89,6 +93,11 @@ builder.Services.AddSMSService();
//CAP<41><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#endregion
builder.Services.AddCAPService<Program>();
#region
//<2F><><EFBFBD>ʻ<EFBFBD><CABB><EFBFBD><EFBFBD><EFBFBD>
#endregion
builder.Services.AddLocalizerService();
//-----------------------------------------------------------------------------------------------------------
var app = builder.Build();
@@ -110,11 +119,17 @@ ServiceLocator.Instance = app.Services;
#region
//<2F><><EFBFBD><EFBFBD>ץȡ<D7A5><C8A1><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>
#endregion
app.UseErrorHandlingService();
//app.UseErrorHandlingService();
#region
//<2F><>̬<EFBFBD>ļ<EFBFBD>ע<EFBFBD><D7A2>
#endregion
//app.UseStaticFiles();
#region
//<2F><><EFBFBD><EFBFBD><EFBFBD>Թ<EFBFBD><D4B9>ʻ<EFBFBD>ע<EFBFBD><D7A2>
#endregion
app.UseLocalizerService();
#region
//HttpsRedirectionע<6E><D7A2>
#endregion

View File

@@ -16,7 +16,7 @@ namespace Yi.Framework.Core
public class JwtUser
{
public User user { get; set; }
public UserEntity user { get; set; }
}
@@ -34,7 +34,7 @@ namespace Yi.Framework.Core
List<Claim> claims = new List<Claim>();
claims.Add(new Claim(JwtRegisteredClaimNames.Nbf, $"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}"));
claims.Add(new Claim(JwtRegisteredClaimNames.Exp, $"{new DateTimeOffset(DateTime.Now.AddMinutes(30)).ToUnixTimeSeconds()}"));
claims.Add(new Claim(ClaimTypes.Name, _user.user.Username));
claims.Add(new Claim(ClaimTypes.Name, _user.user.Name));
claims.Add(new Claim(ClaimTypes.Sid, _user.user.Id.ToString()));
//现在不存放在jwt中而存放在redis中
//foreach (var k in _user?.menuIds)

View File

@@ -4,10 +4,6 @@
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<None Include="..\.editorconfig" Link=".editorconfig" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Yi.Framework.Model\Yi.Framework.Model.csproj" />
</ItemGroup>

View File

@@ -0,0 +1,9 @@
using Yi.Framework.Model.Models;
using Yi.Framework.Repository;
namespace Yi.Framework.Interface
{
public partial interface IUserService: IRepository<UserEntity>
{
}
}

View File

@@ -1,14 +1,9 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Yi.Framework.Model.Models;
using Yi.Framework.Model.Models;
using Yi.Framework.Repository;
namespace Yi.Framework.Interface
{
public partial interface IUserService: IRepository<User>
public partial interface IUserService
{
}
}

View File

@@ -18,4 +18,8 @@
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
</ItemGroup>
<ItemGroup>
<Folder Include="IServiceTemplate\" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,65 @@
using System;
using System.Collections.Generic;
using System.Linq;
using SqlSugar;
namespace Yi.Framework.Model.Models
{
/// <summary>
/// 用户表
///</summary>
[SugarTable("User")]
public partial class UserEntity
{
public UserEntity()
{
this.Id = Guid.NewGuid();
this.IsDeleted=false;
this.CreateTime = DateTime.Now;
}
/// <summary>
/// 1
///</summary>
[SugarColumn(ColumnName="Id" ,IsPrimaryKey = true )]
public Guid Id { get; set; }
/// <summary>
/// 姓名
///</summary>
[SugarColumn(ColumnName="Name" )]
public string Name { get; set; }
/// <summary>
/// 年龄
///</summary>
[SugarColumn(ColumnName="Age" )]
public int? Age { get; set; }
/// <summary>
/// 创建者
///</summary>
[SugarColumn(ColumnName="CreateUser" )]
public Guid? CreateUser { get; set; }
/// <summary>
/// 创建时间
///</summary>
[SugarColumn(ColumnName="CreateTime" )]
public DateTime? CreateTime { get; set; }
/// <summary>
/// 修改者
///</summary>
[SugarColumn(ColumnName="ModifyUser" )]
public Guid? ModifyUser { get; set; }
/// <summary>
/// 修改时间
///</summary>
[SugarColumn(ColumnName="ModifyTime" )]
public DateTime? ModifyTime { get; set; }
/// <summary>
/// 是否删除
///</summary>
[SugarColumn(ColumnName="IsDeleted" )]
public bool? IsDeleted { get; set; }
/// <summary>
/// 租户Id
///</summary>
[SugarColumn(ColumnName="TenantId" )]
public Guid? TenantId { get; set; }
}
}

View File

@@ -1,25 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Yi.Framework.Model.Models
{
public class User
{
public int Id { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string Icon { get; set; }
public string Nick { get; set; }
public string Email { get; set; }
public string Ip { get; set; }
public int? Age { get; set; }
public string Introduction { get; set; }
public string Address { get; set; }
public string Phone { get; set; }
}
}

View File

@@ -4,8 +4,18 @@
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Compile Remove="BaseModels\**" />
<Compile Remove="ModelFactory\**" />
<EmbeddedResource Remove="BaseModels\**" />
<EmbeddedResource Remove="ModelFactory\**" />
<None Remove="BaseModels\**" />
<None Remove="ModelFactory\**" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="NEST" Version="7.16.0" />
<PackageReference Include="SqlSugarCore" Version="5.0.6.4" />
</ItemGroup>
<ItemGroup>
@@ -31,9 +41,4 @@
</Compile>
</ItemGroup>
<ItemGroup>
<Folder Include="BaseModels\" />
<Folder Include="ModelFactory\" />
</ItemGroup>
</Project>

View File

@@ -17,7 +17,8 @@ namespace Yi.Framework.Repository
public static SqlSugarScope Db = new SqlSugarScope(new ConnectionConfig()
{
DbType = SqlSugar.DbType.MySql,
//ConnectionString = Appsettings.app("ConnectionStrings","mysqlConnection") ,
//ConnectionString = Appsettings.app("ConnectionStrings", "mysqlConnection"),
ConnectionString= "server=119.91.207.67;port=3306;database=yi-sqlsugar-dev;user id=root;password=Qz52013142020.",
IsAutoCloseConnection = true
},
db =>

View File

@@ -7,7 +7,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="SqlSugarCore" Version="5.0.6.4" />
<ProjectReference Include="..\Yi.Framework.Model\Yi.Framework.Model.csproj" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,11 @@
using Yi.Framework.Interface;
using Yi.Framework.Model.Models;
using Yi.Framework.Repository;
namespace Yi.Framework.Service
{
public partial class UserService : Repository<UserEntity>, IUserService
{
}
}

View File

@@ -1,20 +1,10 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using Yi.Framework.Common.Const;
using Yi.Framework.Common.Helper;
using Yi.Framework.Core;
using Yi.Framework.Interface;
using Yi.Framework.Model;
using Yi.Framework.Interface;
using Yi.Framework.Model.Models;
using Yi.Framework.Repository;
namespace Yi.Framework.Service
{
public partial class UserService : Repository<User>, IUserService
public partial class UserService
{
}

View File

@@ -20,4 +20,8 @@
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
</ItemGroup>
<ItemGroup>
<Folder Include="ServiceTemplate\" />
</ItemGroup>
</Project>

View File

@@ -30,32 +30,20 @@ namespace Yi.Framework.WebCore
/// </summary>
/// <param name="httpContext"></param>
/// <returns></returns>
public static User GetCurrentUserInfo(this HttpContext httpContext, out List<int> menuIds)
public static UserEntity GetCurrentUserEntityInfo(this HttpContext httpContext, out List<Guid> menuIds)
{
IEnumerable<Claim> claimlist = httpContext.AuthenticateAsync().Result.Principal.Claims;
Int32.TryParse(claimlist.FirstOrDefault(u => u.Type == ClaimTypes.Sid).Value, out int resId);
var resId= new Guid (claimlist.FirstOrDefault(u => u.Type == ClaimTypes.Sid).Value);
menuIds = claimlist.Where(u => u.Type == "menuIds").ToList().Select(u => Convert.ToInt32(u.Value)).ToList();
menuIds = claimlist.Where(u => u.Type == "menuIds").ToList().Select(u => new Guid(u.Value)).ToList();
return new User()
return new UserEntity()
{
Id = resId,
Username = claimlist.FirstOrDefault(u => u.Type == ClaimTypes.Name).Value ?? "匿名"
};
}
public static User GetCurrentUserInfo(this HttpContext httpContext)
{
IEnumerable<Claim> claimlist = httpContext.AuthenticateAsync().Result.Principal.Claims;
Int32.TryParse(claimlist.FirstOrDefault(u => u.Type == ClaimTypes.Sid).Value, out int resId);
return new User()
{
Id = resId,
Username = claimlist.FirstOrDefault(u => u.Type == ClaimTypes.Name).Value ?? "匿名"
Name = claimlist.FirstOrDefault(u => u.Type == ClaimTypes.Name).Value
};
}
}

View File

@@ -13,15 +13,15 @@ namespace Yi.Framework.WebCore.MiddlewareExtend
{
public static IServiceCollection AddAuthorizationService(this IServiceCollection services)
{
services.AddAuthorization(options =>
{
options.AddPolicy(PolicyName.Menu, polic =>
{
polic.AddRequirements(new CustomAuthorizationRequirement(PolicyEnum.MenuPermissions));
});
});
//services.AddAuthorization(options =>
//{
// options.AddPolicy(PolicyName.Menu, polic =>
// {
// polic.AddRequirements(new CustomAuthorizationRequirement(PolicyEnum.MenuPermissions));
// });
//});
services.AddSingleton<IAuthorizationHandler, CustomAuthorizationHandler>();
//services.AddSingleton<IAuthorizationHandler, CustomAuthorizationHandler>();
return services;
}
}

View File

@@ -0,0 +1,35 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Yi.Framework.Common.Models;
using Yi.Framework.Language;
namespace Yi.Framework.WebCore.MiddlewareExtend
{
public static class LocalizerExtend
{
public static IServiceCollection AddLocalizerService(this IServiceCollection services)
{
services.AddLocalization();
return services;
}
public static void UseLocalizerService(this IApplicationBuilder app)
{
Result._local = app.ApplicationServices.GetService<IStringLocalizer<LocalLanguage>>();
var support = new[] { "zh", "en" };
var local = new RequestLocalizationOptions().SetDefaultCulture(support[0])
.AddSupportedCultures(support)
.AddSupportedUICultures(support);
app.UseRequestLocalization(local);
}
}
}