Compare commits

..

2 Commits

Author SHA1 Message Date
yidl c1e0665826 调整默认配置 2025-08-29 23:19:23 +08:00
yidl 658b2c8115 模板 更新 2025-08-29 23:15:34 +08:00
5 changed files with 61 additions and 87 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

@ -41,13 +41,6 @@
"CERT_PASSWORD": "ydl825913", "CERT_PASSWORD": "ydl825913",
"ConsulServer": "http://localhost:8500", "ConsulServer": "http://localhost:8500",
"AllowedOrigins": "http://localhost:19901,http://192.168.0.100:40000", "AllowedOrigins": "http://localhost:19901,http://192.168.0.100:40000",
"AuthorityServer": "https://192.168.1.100:19902",
"AllowedHosts": "*", "AllowedHosts": "*",
"Urls": "http://0.0.0.0:19901", "Urls": "http://0.0.0.0:19901",
"RedisConfig": {
"RedisType": "Normal",
"Connections": [ "redismy:6379" ],
"dbNum": 10,
"Password": "redis&&!123"
}
} }

View File

@ -33,6 +33,5 @@
"AllowedOrigins": "http://localhost:19901,http://localhost:3000,http://localhost:5173", "AllowedOrigins": "http://localhost:19901,http://localhost:3000,http://localhost:5173",
"AllowedHosts": "*", "AllowedHosts": "*",
"RetryCount": 10, "RetryCount": 10,
"AuthorityServer": "https://106.52.199.114:8001",
"SystemHome": "https://106.52.199.114:8000/" "SystemHome": "https://106.52.199.114:8000/"
} }

View File

@ -28,7 +28,7 @@
"Url": "http://*:19901" "Url": "http://*:19901"
}, },
"Https": { "Https": {
"Url": "https://*:8001" "Url": "https://*:19902"
} }
} }
}, },
@ -46,7 +46,10 @@
"AllowedOrigins": "http://localhost:19901,http://localhost:3000,http://localhost:5173", "AllowedOrigins": "http://localhost:19901,http://localhost:3000,http://localhost:5173",
"AllowedHosts": "*", "AllowedHosts": "*",
"RetryCount": 10, "RetryCount": 10,
"AuthorityServer": "https://106.52.199.114:8001/", "REDIS_HOST": "localhost",
"REDIS_PASSWORD": "redis&&!123",
"REDIS_DBNUM": "1",
"AuthorityServer": "https://localhost:19901/",
"SystemHome": "https://106.52.199.114:8000/", "SystemHome": "https://106.52.199.114:8000/",
"Hangfire": { "Hangfire": {
"AdminPassword": "HNjt123~" "AdminPassword": "HNjt123~"

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 });