模板 更新

This commit is contained in:
yidl 2025-08-29 23:15:34 +08:00
parent 73134b736a
commit 658b2c8115
2 changed files with 56 additions and 77 deletions

View File

@ -1,57 +1,37 @@
using Autofac; using Autofac;
using Autofac.Extensions.DependencyInjection; using Autofac.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Builder; using BZPT.Api.Middleware;
using Microsoft.AspNetCore.Hosting; using BZPT.Domains.IRepositories;
using BZPT.Repositories;
using IGeekFan.AspNetCore.Knife4jUI;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.DataProtection;
using Microsoft.AspNetCore.Http.Features;
using Microsoft.AspNetCore.HttpOverrides;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Controllers; using Microsoft.AspNetCore.Mvc.Controllers;
using Microsoft.AspNetCore.Mvc.ModelBinding; using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.OpenApi.Models;
using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using NPlatform.Infrastructure.Config;
using NPlatform.Middleware;
using NPlatform.API;
using NPlatform.DI;
using NPlatform.Repositories;
using Newtonsoft.Json;
using System.Text.Json.Serialization;
using SqlSugar;
using IGeekFan.AspNetCore.Knife4jUI;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.Cookies;
using IdentityServer4.Configuration;
using System.Security.Cryptography.X509Certificates;
using BZPT.Repositories;
using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.DependencyInjection.Extensions;
using NPlatform.Infrastructure.Config.Section;
using ServiceStack;
using Microsoft.IdentityModel.Tokens; using Microsoft.IdentityModel.Tokens;
using Hangfire; using Microsoft.OpenApi.Models;
using Hangfire.Redis.StackExchange; using Newtonsoft.Json;
using Hangfire.Dashboard.BasicAuthorization; using NPlatform.API;
using BZPT.Domains.Application; using NPlatform.Infrastructure.Config;
using System.Security.Claims; //using Hangfire;
//using Hangfire.Redis.StackExchange;
//using Hangfire.Dashboard.BasicAuthorization;
using NPlatform.Infrastructure.IdGenerators; using NPlatform.Infrastructure.IdGenerators;
using NPOI.SS.Formula.Functions; using NPlatform.Middleware;
using Microsoft.AspNetCore.DataProtection; using NPlatform.Repositories;
using StackExchange.Redis;
using BZPT.Api.Middleware;
using Microsoft.AspNetCore.Server.Kestrel.Core;
using Newtonsoft.Json.Linq;
using Serilog.Context;
using Serilog; using Serilog;
using Microsoft.AspNetCore.Authentication.JwtBearer; using Serilog.Context;
using Microsoft.Extensions.FileProviders; using ServiceStack;
using BZPT.Domains.IRepositories; using SqlSugar;
using BZPT.Domains.IService.Sys; using StackExchange.Redis;
using BZPT.Api; using System.Security.Cryptography.X509Certificates;
using Microsoft.AspNetCore.Http.Features; using System.Text;
using Microsoft.AspNetCore.HttpOverrides; using System.Text.Json.Serialization;
var builder = WebApplication.CreateBuilder(args); var builder = WebApplication.CreateBuilder(args);
var serviceConfig = builder.Configuration.GetServiceConfig(); var serviceConfig = builder.Configuration.GetServiceConfig();
@ -70,20 +50,20 @@ var redisConfig = builder.Configuration.GetRedisConfig();
//从配置获取 Redis 连接字符串 //从配置获取 Redis 连接字符串
var redisConn = $"{redisConfig.Connections?.FirstOrDefault()},password={redisConfig.Password}"; var redisConn = $"{redisConfig.Connections?.FirstOrDefault()},password={redisConfig.Password}";
Console.WriteLine("redis 连接:" + redisConn); Console.WriteLine("redis 连接:" + redisConn);
// 配置 Hangfire //// 配置 Hangfire
builder.Services.AddHangfire(x => //builder.Services.AddHangfire(x =>
{ //{
x.SetDataCompatibilityLevel(CompatibilityLevel.Version_170) // x.SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
.UseSimpleAssemblyNameTypeSerializer() // .UseSimpleAssemblyNameTypeSerializer()
.UseRecommendedSerializerSettings() // .UseRecommendedSerializerSettings()
.UseRedisStorage(redisConn, new RedisStorageOptions // .UseRedisStorage(redisConn, new RedisStorageOptions
{ // {
Db = 11, // Db = 11,
Prefix = "Hangfire:" // Prefix = "Hangfire:"
}); // });
}); //});
builder.Services.AddHangfireServer(); //builder.Services.AddHangfireServer();
// 连接到 Redis // 连接到 Redis
var connectionMultiplexer = ConnectionMultiplexer.Connect(redisConn); var connectionMultiplexer = ConnectionMultiplexer.Connect(redisConn);
@ -214,7 +194,7 @@ builder.Services.AddAuthentication(options =>
options.TokenValidationParameters = new TokenValidationParameters options.TokenValidationParameters = new TokenValidationParameters
{ {
ValidateAudience = true, // 验证 Audience ValidateAudience = true, // 验证 Audience
ValidAudiences =new string[] { serviceConfig.ServiceID }, // 或者 "api.BZPT",取决于你的 API 需要验证哪个 Audience ValidAudiences = new string[] { serviceConfig.ServiceID }, // 或者 "api.BZPT",取决于你的 API 需要验证哪个 Audience
ValidateIssuer = true, // 验证 Issuer ValidateIssuer = true, // 验证 Issuer
ValidIssuer = builder.Configuration["AuthorityServer"], // 确保与 IdentityServer4 的 Issuer 配置一致 ValidIssuer = builder.Configuration["AuthorityServer"], // 确保与 IdentityServer4 的 Issuer 配置一致
ValidateLifetime = true, ValidateLifetime = true,

View File

@ -1,23 +1,11 @@
using BZPT.Domains.IRepositories.Sys; using BZPT.Repositories;
using BZPT.Dto.Sys;
using BZPT.Repositories;
using Consul.Filtering;
using DevExtreme.AspNet.Data; using DevExtreme.AspNet.Data;
using NetTaste;
using NPlatform.Domains.Entity;
using NPOI.SS.Formula.Functions;
using ServiceStack; using ServiceStack;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net; using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace BZPT.Domains.Services namespace BZPT.Domains.Services
{ {
public class SugarServiceBase<TEntity,TDto> :BaseService where TDto : BaseDto where TEntity:EntityBase<string> public class SugarServiceBase<TEntity, TDto> : BaseService where TDto : BaseDto where TEntity : EntityBase<string>
{ {
#region CUD #region CUD
[Autowired] [Autowired]
@ -56,16 +44,16 @@ namespace BZPT.Domains.Services
public virtual async Task<INPResult> Delete(string id) public virtual async Task<INPResult> Delete(string id)
{ {
if(string.IsNullOrWhiteSpace(id)) if (string.IsNullOrWhiteSpace(id))
{ {
return new FailResult<TEntity>($"id 参数不能为空"); return new FailResult<TEntity>($"id 参数不能为空");
} }
var rstCount = await this.Repository.RemoveAsync(t=>t.Id== id); var rstCount = await this.Repository.RemoveAsync(t => t.Id == id);
return new SuccessResult<int>(rstCount); return new SuccessResult<int>(rstCount);
} }
public virtual async Task<INPResult> Delete(Expression< Func<TEntity,bool>> deleteWhere) public virtual async Task<INPResult> Delete(Expression<Func<TEntity, bool>> deleteWhere)
{ {
var rstCount = await this.Repository.RemoveAsync(deleteWhere); var rstCount = await this.Repository.RemoveAsync(deleteWhere);
return new SuccessResult<int>(rstCount); return new SuccessResult<int>(rstCount);
@ -127,6 +115,12 @@ namespace BZPT.Domains.Services
{ {
loadOptionsexp.Sort = new SortingInfo[] { new SortingInfo() { Selector = "CreateTime", Desc = true } }; loadOptionsexp.Sort = new SortingInfo[] { new SortingInfo() { Selector = "CreateTime", Desc = true } };
} }
if (loadOptionsexp.Filter == null)
{
loadOptionsexp.Filter = new List<object>();
}
Type type = typeof(TEntity); Type type = typeof(TEntity);
// 检查是否存在指定名称的接口 // 检查是否存在指定名称的接口
Type interfaceType = type.GetInterface("ILogicDelete"); Type interfaceType = type.GetInterface("ILogicDelete");
@ -146,10 +140,15 @@ namespace BZPT.Domains.Services
{ {
loadOptionsexp.Sort = new SortingInfo[] { new SortingInfo() { Selector = "CreateTime", Desc = true } }; loadOptionsexp.Sort = new SortingInfo[] { new SortingInfo() { Selector = "CreateTime", Desc = true } };
} }
if (loadOptionsexp.Filter == null)
{
loadOptionsexp.Filter = new List<object>();
}
Type type = typeof(TEntity); Type type = typeof(TEntity);
// 检查是否存在指定名称的接口 // 检查是否存在指定名称的接口
Type interfaceType = type.GetInterface("ILogicDelete"); Type interfaceType = type.GetInterface("ILogicDelete");
if (interfaceType != null&&!loadOptionsexp.Filter.Contains("IsDeleted")) if (interfaceType != null && !loadOptionsexp.Filter.Contains("IsDeleted"))
{ {
loadOptionsexp.And(new List<object>(){ loadOptionsexp.And(new List<object>(){
"IsDeleted","=",false }); "IsDeleted","=",false });