大版本更新
This commit is contained in:
Binary file not shown.
@@ -10,7 +10,7 @@
|
|||||||
</summary>
|
</summary>
|
||||||
<typeparam name="T"></typeparam>
|
<typeparam name="T"></typeparam>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Yi.Framework.ApiMicroservice.Controllers.BaseCrudController`1.Get(System.Object)">
|
<member name="M:Yi.Framework.ApiMicroservice.Controllers.BaseCrudController`1.Get(System.Int64)">
|
||||||
<summary>
|
<summary>
|
||||||
主键查询
|
主键查询
|
||||||
</summary>
|
</summary>
|
||||||
@@ -44,12 +44,30 @@
|
|||||||
<param name="entity"></param>
|
<param name="entity"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:Yi.Framework.ApiMicroservice.Controllers.BaseCrudController`1.DeleteList(System.Collections.Generic.List{System.Guid})">
|
<member name="M:Yi.Framework.ApiMicroservice.Controllers.BaseCrudController`1.DeleteList(System.Collections.Generic.List{System.Int64})">
|
||||||
<summary>
|
<summary>
|
||||||
列表删除
|
列表删除
|
||||||
</summary>
|
</summary>
|
||||||
<param name="ids"></param>
|
<param name="ids"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:Yi.Framework.ApiMicroservice.Controllers.TestController.LocalTest">
|
||||||
|
<summary>
|
||||||
|
国际化测试
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Yi.Framework.ApiMicroservice.Controllers.TestController.PermissionTest">
|
||||||
|
<summary>
|
||||||
|
权限测试
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Yi.Framework.ApiMicroservice.Controllers.TestController.AutnTest">
|
||||||
|
<summary>
|
||||||
|
策略授权测试
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
</members>
|
</members>
|
||||||
</doc>
|
</doc>
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.Extensions.Localization;
|
||||||
using Yi.Framework.Common.Models;
|
using Yi.Framework.Common.Models;
|
||||||
using Yi.Framework.Interface;
|
using Yi.Framework.Interface;
|
||||||
|
using Yi.Framework.Language;
|
||||||
using Yi.Framework.Model.Models;
|
using Yi.Framework.Model.Models;
|
||||||
using Yi.Framework.Model.Query;
|
using Yi.Framework.Model.Query;
|
||||||
using Yi.Framework.Repository;
|
using Yi.Framework.Repository;
|
||||||
@@ -19,7 +21,6 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
|||||||
public readonly ILogger<T> _logger;
|
public readonly ILogger<T> _logger;
|
||||||
public IBaseService<T> _baseService;
|
public IBaseService<T> _baseService;
|
||||||
public IRepository<T> _repository;
|
public IRepository<T> _repository;
|
||||||
|
|
||||||
public BaseCrudController(ILogger<T> logger, IBaseService<T> iBaseService)
|
public BaseCrudController(ILogger<T> logger, IBaseService<T> iBaseService)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
@@ -34,7 +35,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[Permission($"{nameof(T)}:get:one")]
|
[Permission($"{nameof(T)}:get:one")]
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public async Task<Result> Get(object id)
|
public async Task<Result> Get(long id)
|
||||||
{
|
{
|
||||||
return Result.Success().SetData(await _repository.GetByIdAsync(id));
|
return Result.Success().SetData(await _repository.GetByIdAsync(id));
|
||||||
}
|
}
|
||||||
@@ -71,7 +72,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
|||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<Result> Add(T entity)
|
public async Task<Result> Add(T entity)
|
||||||
{
|
{
|
||||||
return Result.Success().SetData(await _repository.InsertReturnEntityAsync(entity));
|
return Result.Success().SetData(await _repository.InsertReturnSnowflakeIdAsync(entity));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -93,7 +94,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[Permission($"{nameof(T)}:delete:list")]
|
[Permission($"{nameof(T)}:delete:list")]
|
||||||
[HttpDelete]
|
[HttpDelete]
|
||||||
public async Task<Result> DeleteList(List<Guid> ids)
|
public async Task<Result> DeleteList(List<long> ids)
|
||||||
{
|
{
|
||||||
return Result.Success().SetStatus(await _repository.DeleteByLogic(ids));
|
return Result.Success().SetStatus(await _repository.DeleteByLogic(ids));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
using Microsoft.AspNetCore.Authorization;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Yi.Framework.Common.Models;
|
|
||||||
using Yi.Framework.Interface;
|
|
||||||
using Yi.Framework.Model.Models;
|
|
||||||
using Yi.Framework.Repository;
|
|
||||||
using Yi.Framework.WebCore;
|
|
||||||
using Yi.Framework.WebCore.AttributeExtend;
|
|
||||||
using Yi.Framework.WebCore.AuthorizationPolicy;
|
|
||||||
|
|
||||||
namespace Yi.Framework.ApiMicroservice.Controllers
|
|
||||||
{
|
|
||||||
[ApiController]
|
|
||||||
[Route("api/[controller]/[action]")]
|
|
||||||
public class TenantController : BaseCrudController<TenantEntity>
|
|
||||||
{
|
|
||||||
public TenantController(ILogger<TenantEntity> logger, ITenantService iTenantService) : base(logger, iTenantService)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.Extensions.Localization;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Yi.Framework.Common.Models;
|
||||||
|
using Yi.Framework.Interface;
|
||||||
|
using Yi.Framework.Language;
|
||||||
|
using Yi.Framework.Model.Models;
|
||||||
|
using Yi.Framework.Repository;
|
||||||
|
using Yi.Framework.WebCore;
|
||||||
|
using Yi.Framework.WebCore.AttributeExtend;
|
||||||
|
using Yi.Framework.WebCore.AuthorizationPolicy;
|
||||||
|
|
||||||
|
namespace Yi.Framework.ApiMicroservice.Controllers
|
||||||
|
{
|
||||||
|
[ApiController]
|
||||||
|
[Route("api/[controller]/[action]")]
|
||||||
|
public class TestController : ControllerBase
|
||||||
|
{
|
||||||
|
private IStringLocalizer<LocalLanguage> _local;
|
||||||
|
public TestController(ILogger<UserEntity> logger, IUserService iUserService, IStringLocalizer<LocalLanguage> local)
|
||||||
|
{
|
||||||
|
_local = local;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 国际化测试
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet]
|
||||||
|
public Result LocalTest()
|
||||||
|
{
|
||||||
|
return Result.Success().SetData(_local["succeed"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 权限测试
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet]
|
||||||
|
[Permission("user:get:test")]
|
||||||
|
public Result PermissionTest()
|
||||||
|
{
|
||||||
|
return Result.Success();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 策略授权测试
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet]
|
||||||
|
[Authorize(PolicyName.Sid)]
|
||||||
|
public Result AutnTest()
|
||||||
|
{
|
||||||
|
return Result.Success();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -108,7 +108,6 @@ builder.Services.AddCAPService();
|
|||||||
builder.Services.AddLocalizerService();
|
builder.Services.AddLocalizerService();
|
||||||
//-----------------------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------------------
|
||||||
var app = builder.Build();
|
var app = builder.Build();
|
||||||
|
|
||||||
#region
|
#region
|
||||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
"DbConn": {
|
"DbConn": {
|
||||||
|
//"WriteUrl": "DataSource=yi-sqlsugar-dev.db",
|
||||||
"WriteUrl": "server=[xxxx];port=3306;database=[xxxx];user id=[xxxx];password=[xxxx]",
|
"WriteUrl": "server=[xxxx];port=3306;database=[xxxx];user id=[xxxx];password=[xxxx]",
|
||||||
"ReadUrl": [
|
"ReadUrl": [
|
||||||
"server=[xxxx];port=3306;database=[xxxx];user id=[xxxx];password=[xxxx]",
|
"server=[xxxx];port=3306;database=[xxxx];user id=[xxxx];password=[xxxx]",
|
||||||
|
|||||||
@@ -25,13 +25,10 @@
|
|||||||
|
|
||||||
"Cors_Enabled": true,
|
"Cors_Enabled": true,
|
||||||
"DbList": [ "Sqlite", "Mysql", "Sqlserver", "Oracle" ],
|
"DbList": [ "Sqlite", "Mysql", "Sqlserver", "Oracle" ],
|
||||||
"DbSelect": "Mysql",
|
"DbSelect": "Sqlite",
|
||||||
"Pan": {
|
|
||||||
"ZipPath": "D:/AppWeb/test/zip"
|
|
||||||
},
|
|
||||||
|
|
||||||
"DbConn": {
|
"DbConn": {
|
||||||
"WriteUrl": "server=[xxxx];port=3306;database=[xxxx];user id=[xxxx];password=[xxxx]",
|
"WriteUrl": "DataSource=yi-sqlsugar-dev.db",
|
||||||
|
//"WriteUrl": "[xxxx];port=3306;database=[xxxx];user id=[xxxx];password=[xxxx]",
|
||||||
"ReadUrl": [
|
"ReadUrl": [
|
||||||
"server=[xxxx];port=3306;database=[xxxx];user id=[xxxx];password=[xxxx]",
|
"server=[xxxx];port=3306;database=[xxxx];user id=[xxxx];password=[xxxx]",
|
||||||
"server=[xxxx];port=3306;database=[xxxx];user id=[xxxx];password=[xxxx]",
|
"server=[xxxx];port=3306;database=[xxxx];user id=[xxxx];password=[xxxx]",
|
||||||
|
|||||||
Binary file not shown.
@@ -3,7 +3,7 @@ using System.Collections.Generic;
|
|||||||
|
|
||||||
namespace Yi.Framework.Common.IOCOptions
|
namespace Yi.Framework.Common.IOCOptions
|
||||||
{
|
{
|
||||||
public class DbConnOptions
|
public class SqlConnOptions
|
||||||
{
|
{
|
||||||
public string WriteUrl { get; set; }
|
public string WriteUrl { get; set; }
|
||||||
public List<string> ReadUrl { get; set; }
|
public List<string> ReadUrl { get; set; }
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Yi.Framework.Common.IOCOptions
|
|
||||||
{
|
|
||||||
public class SqliteOptions
|
|
||||||
{
|
|
||||||
public string WriteUrl { get; set; }
|
|
||||||
public List<string> ReadUrl { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -37,11 +37,10 @@ namespace Yi.Framework.Core
|
|||||||
claims.Add(new Claim(JwtRegisteredClaimNames.Nbf, $"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}"));
|
claims.Add(new Claim(JwtRegisteredClaimNames.Nbf, $"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}"));
|
||||||
claims.Add(new Claim(JwtRegisteredClaimNames.Exp, $"{new DateTimeOffset(DateTime.Now.AddMinutes(minutes)).ToUnixTimeSeconds()}"));
|
claims.Add(new Claim(JwtRegisteredClaimNames.Exp, $"{new DateTimeOffset(DateTime.Now.AddMinutes(minutes)).ToUnixTimeSeconds()}"));
|
||||||
claims.Add(new Claim(JwtRegisteredClaimNames.Sid, user.Id.ToString()));
|
claims.Add(new Claim(JwtRegisteredClaimNames.Sid, user.Id.ToString()));
|
||||||
//claims.Add(new Claim("TenantId", userRoleMenuEntity.user.TenantId.ToString()));
|
|
||||||
//claims.Add(new Claim("TenantName", userRoleMenuEntity.tenant.TenantName.ToString()));
|
//-----------------------------以下从user的权限表中添加权限-----------------------例如:
|
||||||
//claims.Add(new Claim("Id", userRoleMenuEntity.user.Id.ToString()));
|
claims.Add(new Claim("permission", "userentity:get:list"));
|
||||||
//claims.Add(new Claim("Name", userRoleMenuEntity.user.Name));
|
claims.Add(new Claim("permission", "userentity:get:one"));
|
||||||
//claims.Add(new Claim("TenantLevel", userRoleMenuEntity.tenant.TenantLevel.ToString()));
|
|
||||||
|
|
||||||
if (isRefresh)
|
if (isRefresh)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
using Yi.Framework.Model.Models;
|
|
||||||
using Yi.Framework.Repository;
|
|
||||||
|
|
||||||
namespace Yi.Framework.Interface
|
|
||||||
{
|
|
||||||
public partial interface ITenantService:IBaseService<TenantEntity>
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Remove="T4Service.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Yi.Framework.DTOModel\Yi.Framework.DTOModel.csproj" />
|
||||||
|
<ProjectReference Include="..\Yi.Framework.Model\Yi.Framework.Model.csproj" />
|
||||||
|
<ProjectReference Include="..\Yi.Framework.Repository\Yi.Framework.Repository.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Folder Include="IServiceTemplate\" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -14,12 +14,23 @@
|
|||||||
<ProjectReference Include="..\Yi.Framework.Repository\Yi.Framework.Repository.csproj" />
|
<ProjectReference Include="..\Yi.Framework.Repository\Yi.Framework.Repository.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Update="T4IService.tt">
|
||||||
|
<LastGenOutput>T4Iservice.cs</LastGenOutput>
|
||||||
|
<Generator>TextTemplatingFileGenerator</Generator>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="IServiceTemplate\" />
|
<Compile Update="T4IService.cs">
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>T4IService.tt</DependentUpon>
|
||||||
|
</Compile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ namespace Yi.Framework.Model.Models
|
|||||||
{
|
{
|
||||||
public BaseModelEntity()
|
public BaseModelEntity()
|
||||||
{
|
{
|
||||||
this.Id = Guid.NewGuid();
|
|
||||||
this.IsDeleted = false;
|
this.IsDeleted = false;
|
||||||
this.CreateTime = DateTime.Now;
|
this.CreateTime = DateTime.Now;
|
||||||
}
|
}
|
||||||
@@ -19,17 +18,17 @@ namespace Yi.Framework.Model.Models
|
|||||||
/// 1
|
/// 1
|
||||||
///</summary>
|
///</summary>
|
||||||
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true)]
|
[SugarColumn(ColumnName = "Id", IsPrimaryKey = true)]
|
||||||
public Guid Id { get; set; }
|
public long Id { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 创建者
|
/// 创建者
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarColumn(ColumnName = "CreateUser")]
|
[SugarColumn(ColumnName = "CreateUser")]
|
||||||
public Guid? CreateUser { get; set; }
|
public long? CreateUser { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 修改者
|
/// 修改者
|
||||||
///</summary>
|
///</summary>
|
||||||
[SugarColumn(ColumnName = "ModifyUser")]
|
[SugarColumn(ColumnName = "ModifyUser")]
|
||||||
public Guid? ModifyUser { get; set; }
|
public long? ModifyUser { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 创建时间
|
/// 创建时间
|
||||||
///</summary>
|
///</summary>
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using SqlSugar;
|
|
||||||
namespace Yi.Framework.Model.Models
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 租户表
|
|
||||||
///</summary>
|
|
||||||
[SugarTable("Tenant")]
|
|
||||||
public partial class TenantEntity:BaseModelEntity
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 租户名
|
|
||||||
///</summary>
|
|
||||||
[SugarColumn(ColumnName="TenantName" )]
|
|
||||||
public string TenantName { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -5,38 +5,38 @@ using SqlSugar;
|
|||||||
namespace Yi.Framework.Model.Models
|
namespace Yi.Framework.Model.Models
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 用户表
|
///
|
||||||
///</summary>
|
///</summary>
|
||||||
[SugarTable("User")]
|
[SugarTable("User")]
|
||||||
public partial class UserEntity:BaseModelEntity
|
public partial class UserEntity:BaseModelEntity
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 姓名
|
///
|
||||||
///</summary>
|
///</summary>
|
||||||
[SugarColumn(ColumnName="Name" )]
|
[SugarColumn(ColumnName="Name" )]
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 年龄
|
///
|
||||||
///</summary>
|
///</summary>
|
||||||
[SugarColumn(ColumnName="Age" )]
|
[SugarColumn(ColumnName="Age" )]
|
||||||
public int? Age { get; set; }
|
public int? Age { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 租户Id
|
///
|
||||||
///</summary>
|
///</summary>
|
||||||
[SugarColumn(ColumnName="TenantId" )]
|
[SugarColumn(ColumnName="TenantId" )]
|
||||||
public Guid? TenantId { get; set; }
|
public long? TenantId { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 账户
|
///
|
||||||
///</summary>
|
///</summary>
|
||||||
[SugarColumn(ColumnName="UserName" )]
|
[SugarColumn(ColumnName="UserName" )]
|
||||||
public string UserName { get; set; }
|
public string UserName { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 密码
|
///
|
||||||
///</summary>
|
///</summary>
|
||||||
[SugarColumn(ColumnName="Password" )]
|
[SugarColumn(ColumnName="Password" )]
|
||||||
public string Password { get; set; }
|
public string Password { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 加密盐值
|
///
|
||||||
///</summary>
|
///</summary>
|
||||||
[SugarColumn(ColumnName="Salt" )]
|
[SugarColumn(ColumnName="Salt" )]
|
||||||
public string Salt { get; set; }
|
public string Salt { get; set; }
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<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>
|
||||||
|
<ProjectReference Include="..\Yi.Framework.Common\Yi.Framework.Common.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Update="T4DaraContext.tt">
|
||||||
|
<Generator>TextTemplatingFileGenerator</Generator>
|
||||||
|
<LastGenOutput>T4DaraContext.cs</LastGenOutput>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Update="T4DaraContext.cs">
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>T4DaraContext.tt</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -1,21 +1,12 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Remove="BaseModels\**" />
|
|
||||||
<Compile Remove="ModelFactory\**" />
|
|
||||||
<EmbeddedResource Remove="BaseModels\**" />
|
|
||||||
<EmbeddedResource Remove="ModelFactory\**" />
|
|
||||||
<None Remove="BaseModels\**" />
|
|
||||||
<None Remove="ModelFactory\**" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="NEST" Version="7.16.0" />
|
<PackageReference Include="NEST" Version="7.16.0" />
|
||||||
<PackageReference Include="SqlSugarCore" Version="5.0.6.4" />
|
<PackageReference Include="SqlSugarCore" Version="5.0.6.5" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -27,6 +18,10 @@
|
|||||||
<Generator>TextTemplatingFileGenerator</Generator>
|
<Generator>TextTemplatingFileGenerator</Generator>
|
||||||
<LastGenOutput>T4DaraContext.cs</LastGenOutput>
|
<LastGenOutput>T4DaraContext.cs</LastGenOutput>
|
||||||
</None>
|
</None>
|
||||||
|
<None Update="T4DataContext.tt">
|
||||||
|
<Generator>TextTemplatingFileGenerator</Generator>
|
||||||
|
<LastGenOutput>T4DataContext.cs</LastGenOutput>
|
||||||
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -39,6 +34,11 @@
|
|||||||
<AutoGen>True</AutoGen>
|
<AutoGen>True</AutoGen>
|
||||||
<DependentUpon>T4DaraContext.tt</DependentUpon>
|
<DependentUpon>T4DaraContext.tt</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Update="T4DataContext.cs">
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>T4DataContext.tt</DependentUpon>
|
||||||
|
</Compile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -17,6 +17,6 @@ namespace Yi.Framework.Repository
|
|||||||
public Task<List<S>> StoreAsync<S>(string storeName, object para);
|
public Task<List<S>> StoreAsync<S>(string storeName, object para);
|
||||||
public Task<PageModel<List<T>>> CommonPage(QueryPageCondition pars);
|
public Task<PageModel<List<T>>> CommonPage(QueryPageCondition pars);
|
||||||
public Task<List<T>> GetListAsync(QueryCondition pars);
|
public Task<List<T>> GetListAsync(QueryCondition pars);
|
||||||
public Task<bool> DeleteByLogic(List<Guid> ids);
|
public Task<bool> DeleteByLogic(List<long> ids);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ namespace Yi.Framework.Repository
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<T> InsertReturnEntityAsync(T entity)
|
public async Task<T> InsertReturnEntityAsync(T entity)
|
||||||
{
|
{
|
||||||
|
entity.Id =SnowFlakeSingle.instance.getID();
|
||||||
return await Db.Insertable(entity).ExecuteReturnEntityAsync();
|
return await Db.Insertable(entity).ExecuteReturnEntityAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -38,7 +39,7 @@ namespace Yi.Framework.Repository
|
|||||||
/// 逻辑多删除
|
/// 逻辑多删除
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<bool> DeleteByLogic(List<Guid> ids)
|
public async Task<bool> DeleteByLogic(List<long> ids)
|
||||||
{
|
{
|
||||||
var entitys = await Db.Queryable<T>().Where(u => ids.Contains(u.Id)).ToListAsync();
|
var entitys = await Db.Queryable<T>().Where(u => ids.Contains(u.Id)).ToListAsync();
|
||||||
entitys.ForEach(u=>u.IsDeleted=true);
|
entitys.ForEach(u=>u.IsDeleted=true);
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Yi.Framework.Common\Yi.Framework.Common.csproj" />
|
||||||
<ProjectReference Include="..\Yi.Framework.Model\Yi.Framework.Model.csproj" />
|
<ProjectReference Include="..\Yi.Framework.Model\Yi.Framework.Model.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
using SqlSugar;
|
|
||||||
using Yi.Framework.Interface;
|
|
||||||
using Yi.Framework.Model.Models;
|
|
||||||
using Yi.Framework.Repository;
|
|
||||||
|
|
||||||
namespace Yi.Framework.Service
|
|
||||||
{
|
|
||||||
public partial class TenantService : BaseService<TenantEntity>, ITenantService
|
|
||||||
{
|
|
||||||
public TenantService(IRepository<TenantEntity> repository) : base(repository)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Remove="T4DaraContext.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Yi.Framework.Core\Yi.Framework.Core.csproj" />
|
||||||
|
<ProjectReference Include="..\Yi.Framework.DTOModel\Yi.Framework.DTOModel.csproj" />
|
||||||
|
<ProjectReference Include="..\Yi.Framework.Interface\Yi.Framework.Interface.csproj" />
|
||||||
|
<ProjectReference Include="..\Yi.Framework.Model\Yi.Framework.Model.csproj" />
|
||||||
|
<ProjectReference Include="..\Yi.Framework.Repository\Yi.Framework.Repository.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Folder Include="ServiceTemplate\" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -16,12 +16,23 @@
|
|||||||
<ProjectReference Include="..\Yi.Framework.Repository\Yi.Framework.Repository.csproj" />
|
<ProjectReference Include="..\Yi.Framework.Repository\Yi.Framework.Repository.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Update="T4Service.tt">
|
||||||
|
<LastGenOutput>T4Service.cs</LastGenOutput>
|
||||||
|
<Generator>TextTemplatingFileGenerator</Generator>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="ServiceTemplate\" />
|
<Compile Update="T4Service.cs">
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>T4Service.tt</DependentUpon>
|
||||||
|
</Compile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Microsoft.AspNetCore.Mvc.Filters;
|
using Microsoft.AspNetCore.Mvc.Filters;
|
||||||
|
using Microsoft.IdentityModel.JsonWebTokens;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -29,16 +30,21 @@ namespace Yi.Framework.WebCore.AttributeExtend
|
|||||||
{
|
{
|
||||||
throw new Exception("权限不能为空!");
|
throw new Exception("权限不能为空!");
|
||||||
}
|
}
|
||||||
|
|
||||||
//可以从Redis得到用户菜单列表,或者直接从jwt中获取
|
|
||||||
|
|
||||||
var result = false;
|
var result = false;
|
||||||
|
|
||||||
//判断权限是否存在Redis中
|
|
||||||
if (permission.Length>0)
|
//可以从Redis得到用户菜单列表,或者直接从jwt中获取
|
||||||
{
|
var sid = context.HttpContext.User.Claims.FirstOrDefault(u => u.Type == JwtRegisteredClaimNames.Sid);
|
||||||
result = true;
|
|
||||||
}
|
//jwt存在的权限列表
|
||||||
|
var perList = context.HttpContext.User.Claims.Where(u => u.Type == "permission").Select(u=> u.Value.ToString().ToLower()). ToList();
|
||||||
|
//判断权限是否存在Redis中,或者jwt中
|
||||||
|
|
||||||
|
//if (perList.Contains(permission.ToLower()))
|
||||||
|
//{
|
||||||
|
// result = true;
|
||||||
|
//}
|
||||||
|
result = true;
|
||||||
|
|
||||||
|
|
||||||
if (!result)
|
if (!result)
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authentication;
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
|
using Microsoft.IdentityModel.JsonWebTokens;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -15,51 +17,30 @@ namespace Yi.Framework.WebCore.AuthorizationPolicy
|
|||||||
public class CustomAuthorizationHandler : AuthorizationHandler<CustomAuthorizationRequirement>
|
public class CustomAuthorizationHandler : AuthorizationHandler<CustomAuthorizationRequirement>
|
||||||
{
|
{
|
||||||
|
|
||||||
private CacheClientDB _cacheClientDB;
|
//private CacheClientDB _cacheClientDB;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 构造函数
|
/// 构造函数
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public CustomAuthorizationHandler(CacheClientDB cacheClientDB)
|
public CustomAuthorizationHandler()
|
||||||
{
|
{
|
||||||
_cacheClientDB= cacheClientDB;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//验证的方法就在这里
|
//验证的方法就在这里
|
||||||
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, CustomAuthorizationRequirement requirement)
|
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, CustomAuthorizationRequirement requirement)
|
||||||
{
|
{
|
||||||
var currentClaim = context.User.Claims.FirstOrDefault(u => u.Type == ClaimTypes.Sid);
|
var currentClaim = context.User.Claims.FirstOrDefault(u => u.Type == JwtRegisteredClaimNames.Sid);
|
||||||
|
//DefaultHttpContext httpcontext = (DefaultHttpContext)context.AuthenticateAsync();
|
||||||
if (currentClaim==null) //说明没有写入Sid 没有登录
|
if (currentClaim!=null) //说明没有写入Sid 没有登录
|
||||||
{
|
|
||||||
return Task.CompletedTask; //验证不同过
|
|
||||||
}
|
|
||||||
|
|
||||||
int currentUserId = 0;
|
|
||||||
if (!string.IsNullOrWhiteSpace(currentClaim.Value))
|
|
||||||
{
|
|
||||||
currentUserId = Convert.ToInt32(currentClaim.Value);
|
|
||||||
}
|
|
||||||
DefaultHttpContext httpcontext = (DefaultHttpContext)context.Resource;
|
|
||||||
Dictionary<string, string> dicMenueDictionary = new Dictionary<string, string>();
|
|
||||||
//现在只需要登录的时候把用户的api路径添加到redis去
|
|
||||||
//每次访问的时候进行redis判断一下即可
|
|
||||||
//注意一下,redis不能一直保存,和jwt一样搞一个期限
|
|
||||||
//var menuList=_cacheClientDB.Get<List<menuDto>>(RedisConst.userMenusApi+":"+currentUserId);
|
|
||||||
//foreach (var k in menuList)
|
|
||||||
//{
|
|
||||||
// if (k.mould != null)
|
|
||||||
// {
|
|
||||||
// dicMenueDictionary.Add(k.mould?.id.ToString(), "/api"+ k.mould?.url);
|
|
||||||
// }
|
|
||||||
|
|
||||||
//}
|
|
||||||
|
|
||||||
if (dicMenueDictionary.ContainsValue(httpcontext.Request.Path))
|
|
||||||
{
|
{
|
||||||
context.Succeed(requirement); //验证通过了
|
context.Succeed(requirement); //验证通过了
|
||||||
}
|
}
|
||||||
|
//string currentUserId = "";
|
||||||
|
//if (!string.IsNullOrWhiteSpace(currentClaim.Value))
|
||||||
|
//{
|
||||||
|
// currentUserId = currentClaim.Value;
|
||||||
|
//}
|
||||||
|
//DefaultHttpContext httpcontext = (DefaultHttpContext)context.Resource;
|
||||||
return Task.CompletedTask; //验证不同过
|
return Task.CompletedTask; //验证不同过
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,6 @@ namespace Yi.Framework.WebCore.AuthorizationPolicy
|
|||||||
}
|
}
|
||||||
public static class PolicyName
|
public static class PolicyName
|
||||||
{
|
{
|
||||||
public const string Menu = "Menu";
|
public const string Sid = "Sid";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,8 +34,7 @@ namespace Yi.Framework.WebCore
|
|||||||
{
|
{
|
||||||
IEnumerable<Claim> claimlist = httpContext.AuthenticateAsync().Result.Principal.Claims;
|
IEnumerable<Claim> claimlist = httpContext.AuthenticateAsync().Result.Principal.Claims;
|
||||||
|
|
||||||
var resId= new Guid (claimlist.FirstOrDefault(u => u.Type == ClaimTypes.Sid).Value);
|
long.TryParse(claimlist.FirstOrDefault(u => u.Type == ClaimTypes.Sid).Value,out var resId) ;
|
||||||
|
|
||||||
|
|
||||||
menuIds = claimlist.Where(u => u.Type == "menuIds").ToList().Select(u => new Guid(u.Value)).ToList();
|
menuIds = claimlist.Where(u => u.Type == "menuIds").ToList().Select(u => new Guid(u.Value)).ToList();
|
||||||
|
|
||||||
|
|||||||
@@ -13,15 +13,15 @@ namespace Yi.Framework.WebCore.MiddlewareExtend
|
|||||||
{
|
{
|
||||||
public static IServiceCollection AddAuthorizationService(this IServiceCollection services)
|
public static IServiceCollection AddAuthorizationService(this IServiceCollection services)
|
||||||
{
|
{
|
||||||
//services.AddAuthorization(options =>
|
services.AddAuthorization(options =>
|
||||||
//{
|
{
|
||||||
// options.AddPolicy(PolicyName.Menu, polic =>
|
options.AddPolicy(PolicyName.Sid, polic =>
|
||||||
// {
|
{
|
||||||
// polic.AddRequirements(new CustomAuthorizationRequirement(PolicyEnum.MenuPermissions));
|
polic.AddRequirements(new CustomAuthorizationRequirement(PolicyEnum.MenuPermissions));
|
||||||
// });
|
});
|
||||||
//});
|
});
|
||||||
|
|
||||||
//services.AddSingleton<IAuthorizationHandler, CustomAuthorizationHandler>();
|
services.AddSingleton<IAuthorizationHandler, CustomAuthorizationHandler>();
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using Microsoft.Extensions.Configuration;
|
|||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using Yi.Framework.Common.IOCOptions;
|
||||||
using Yi.Framework.Model;
|
using Yi.Framework.Model;
|
||||||
|
|
||||||
namespace Yi.Framework.WebCore.MiddlewareExtend
|
namespace Yi.Framework.WebCore.MiddlewareExtend
|
||||||
@@ -20,6 +21,11 @@ namespace Yi.Framework.WebCore.MiddlewareExtend
|
|||||||
#endregion
|
#endregion
|
||||||
services.AddSingleton(new Appsettings(configuration));
|
services.AddSingleton(new Appsettings(configuration));
|
||||||
|
|
||||||
|
#region
|
||||||
|
//数据库连接字符串
|
||||||
|
#endregion
|
||||||
|
services.Configure<SqlConnOptions>(Appsettings.appConfiguration("DbConn"));
|
||||||
|
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,11 +27,9 @@ namespace Yi.Framework.WebCore.MiddlewareExtend
|
|||||||
{
|
{
|
||||||
options.TokenValidationParameters = new TokenValidationParameters
|
options.TokenValidationParameters = new TokenValidationParameters
|
||||||
{
|
{
|
||||||
ValidateIssuer = true,//是否验证Issuer
|
ValidateIssuer = true,//是否验证Issuer
|
||||||
ValidateAudience = true,//是否验证Audience
|
ValidateAudience = true,//是否验证Audience
|
||||||
ValidateLifetime = true,//是否验证失效时间
|
ValidateLifetime = true,//是否验证失效时间
|
||||||
|
|
||||||
|
|
||||||
ValidateIssuerSigningKey = true,//是否验证SecurityKey
|
ValidateIssuerSigningKey = true,//是否验证SecurityKey
|
||||||
ValidAudience = jwtOptions.Audience,//Audience
|
ValidAudience = jwtOptions.Audience,//Audience
|
||||||
ValidIssuer = jwtOptions.Issuer,//Issuer,这两项和前面签发jwt的设置一致
|
ValidIssuer = jwtOptions.Issuer,//Issuer,这两项和前面签发jwt的设置一致
|
||||||
|
|||||||
@@ -12,11 +12,36 @@ namespace Yi.Framework.WebCore.MiddlewareExtend
|
|||||||
{
|
{
|
||||||
public static void AddSqlsugarServer(this IServiceCollection services)
|
public static void AddSqlsugarServer(this IServiceCollection services)
|
||||||
{
|
{
|
||||||
|
DbType dbType;
|
||||||
|
var slavaConFig = new List<SlaveConnectionConfig>();
|
||||||
|
if (Appsettings.appBool("MutiDB_Enabled"))
|
||||||
|
{
|
||||||
|
var readCon = Appsettings.app<List<string>>("DbConn", "ReadUrl");
|
||||||
|
|
||||||
|
readCon.ForEach(s => {
|
||||||
|
slavaConFig.Add(new SlaveConnectionConfig() { ConnectionString = s });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (Appsettings.app("DbSelect"))
|
||||||
|
{
|
||||||
|
case "Mysql": dbType = DbType.MySql; break;
|
||||||
|
case "Sqlite": dbType = DbType.Sqlite; break;
|
||||||
|
case "Sqlserver": dbType = DbType.SqlServer; break;
|
||||||
|
case "Oracle": dbType = DbType.Oracle; break;
|
||||||
|
default:throw new Exception("DbSelect配置写的TM是个什么东西?");
|
||||||
|
}
|
||||||
SqlSugarScope sqlSugar = new SqlSugarScope(new ConnectionConfig()
|
SqlSugarScope sqlSugar = new SqlSugarScope(new ConnectionConfig()
|
||||||
{
|
{
|
||||||
DbType = SqlSugar.DbType.MySql,
|
DbType = dbType,
|
||||||
ConnectionString = Appsettings.app("DbConn", "WriteUrl"),
|
ConnectionString = Appsettings.app("DbConn", "WriteUrl"),
|
||||||
IsAutoCloseConnection = true
|
IsAutoCloseConnection = true,
|
||||||
|
MoreSettings = new ConnMoreSettings()
|
||||||
|
{
|
||||||
|
DisableNvarchar = true
|
||||||
|
},
|
||||||
|
SlaveConnectionConfigs = slavaConFig,
|
||||||
|
|
||||||
},
|
},
|
||||||
db =>
|
db =>
|
||||||
{
|
{
|
||||||
@@ -31,7 +56,6 @@ namespace Yi.Framework.WebCore.MiddlewareExtend
|
|||||||
{
|
{
|
||||||
//entityInfo.SetValue(new Guid(httpcontext.Request.Headers["Id"].ToString()));
|
//entityInfo.SetValue(new Guid(httpcontext.Request.Headers["Id"].ToString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entityInfo.PropertyName == "TenantId")
|
if (entityInfo.PropertyName == "TenantId")
|
||||||
{
|
{
|
||||||
//entityInfo.SetValue(new Guid(httpcontext.Request.Headers["TenantId"].ToString()));
|
//entityInfo.SetValue(new Guid(httpcontext.Request.Headers["TenantId"].ToString()));
|
||||||
|
|||||||
Reference in New Issue
Block a user