😎1、优化微信支付相关代码 2、修复代码生成字典映射 3、升级依赖 4、修复清理在线用户逻辑

This commit is contained in:
zuohuaijun 2025-02-25 22:42:37 +08:00
parent 59ff313d39
commit 03ff581e2f
11 changed files with 107 additions and 109 deletions

View File

@ -20,9 +20,9 @@
<PackageReference Include="AspNetCoreRateLimit" Version="5.0.0" /> <PackageReference Include="AspNetCoreRateLimit" Version="5.0.0" />
<PackageReference Include="BouncyCastle.Cryptography" Version="2.5.1" Aliases="BouncyCastleV2" /> <PackageReference Include="BouncyCastle.Cryptography" Version="2.5.1" Aliases="BouncyCastleV2" />
<PackageReference Include="Elastic.Clients.Elasticsearch" Version="8.17.1" /> <PackageReference Include="Elastic.Clients.Elasticsearch" Version="8.17.1" />
<PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.9.7.10" /> <PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.9.7.13" />
<PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.7.10" /> <PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.7.13" />
<PackageReference Include="Furion.Pure" Version="4.9.7.10" /> <PackageReference Include="Furion.Pure" Version="4.9.7.13" />
<PackageReference Include="Hardware.Info" Version="101.0.1" /> <PackageReference Include="Hardware.Info" Version="101.0.1" />
<PackageReference Include="Hashids.net" Version="1.7.0" /> <PackageReference Include="Hashids.net" Version="1.7.0" />
<PackageReference Include="IPTools.China" Version="1.6.0" /> <PackageReference Include="IPTools.China" Version="1.6.0" />
@ -48,7 +48,7 @@
<PackageReference Include="SSH.NET" Version="2024.2.0" /> <PackageReference Include="SSH.NET" Version="2024.2.0" />
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.6.0.2" /> <PackageReference Include="System.Linq.Dynamic.Core" Version="1.6.0.2" />
<PackageReference Include="System.Net.Http" Version="4.3.4" /> <PackageReference Include="System.Net.Http" Version="4.3.4" />
<PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1184" /> <PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1186" />
<PackageReference Include="UAParser" Version="3.1.47" /> <PackageReference Include="UAParser" Version="3.1.47" />
<PackageReference Include="Yitter.IdGenerator" Version="1.0.14" /> <PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
</ItemGroup> </ItemGroup>

View File

@ -116,7 +116,7 @@ public class SysOnlineUserService : IDynamicApiController, ITransient
[DisplayName("清理在线用户")] [DisplayName("清理在线用户")]
public async Task ClearOnline() public async Task ClearOnline()
{ {
if (await _sysConfigService.GetConfigValueByCode<bool>(ConfigConst.SysSingleLogin)) return; if (!await _sysConfigService.GetConfigValueByCode<bool>(ConfigConst.SysSingleLogin)) return;
// 相同账号最后登录的用户Id集合 // 相同账号最后登录的用户Id集合
var onlineUsers = await _sysOnlineUerRep.AsQueryable().GroupBy(u => u.UserId) var onlineUsers = await _sysOnlineUerRep.AsQueryable().GroupBy(u => u.UserId)

View File

@ -15,7 +15,7 @@ namespace Admin.NET.Core.Service;
[ApiDescriptionSettings(Order = 210, Description = "微信支付")] [ApiDescriptionSettings(Order = 210, Description = "微信支付")]
public class SysWechatPayService : IDynamicApiController, ITransient public class SysWechatPayService : IDynamicApiController, ITransient
{ {
private static List<WechatPayEventInterceptor> wechatPayEventHandlers = new List<WechatPayEventInterceptor>(); private static readonly List<WechatPayEventInterceptor> wechatPayEventHandlers = [new WechatPayEventInterceptor() { Order = int.MaxValue }];
/// <summary> /// <summary>
/// 注册支付记录变化事件处理器 /// 注册支付记录变化事件处理器
@ -42,7 +42,7 @@ public class SysWechatPayService : IDynamicApiController, ITransient
IOptions<PayCallBackOptions> payCallBackOptions) IOptions<PayCallBackOptions> payCallBackOptions)
{ {
_sysWechatPayRep = sysWechatPayRep; _sysWechatPayRep = sysWechatPayRep;
this._sysWechatRefundRep = sysWechatRefundRep; _sysWechatRefundRep = sysWechatRefundRep;
_wechatPayOptions = wechatPayOptions.Value; _wechatPayOptions = wechatPayOptions.Value;
_payCallBackOptions = payCallBackOptions.Value; _payCallBackOptions = payCallBackOptions.Value;

View File

@ -4,13 +4,7 @@
// //
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
using System; namespace Admin.NET.Core.Service;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Admin.NET.Core;
/// <summary> /// <summary>
/// 微信支传订单状态变化事件拦截器 /// 微信支传订单状态变化事件拦截器
@ -18,7 +12,7 @@ namespace Admin.NET.Core;
public class WechatPayEventInterceptor public class WechatPayEventInterceptor
{ {
/// <summary> /// <summary>
/// 排序,数据越大越先执行 /// 数值越大越先执行
/// </summary> /// </summary>
public int Order = 0; public int Order = 0;
@ -31,7 +25,6 @@ public class WechatPayEventInterceptor
/// <returns></returns> /// <returns></returns>
public virtual async Task<bool> PayInforChanged(SysWechatPay oldInfo, SysWechatPay newInfo) public virtual async Task<bool> PayInforChanged(SysWechatPay oldInfo, SysWechatPay newInfo)
{ {
return await Task.FromResult<bool>(true); return await Task.FromResult(true);
} }
} }

View File

@ -253,9 +253,6 @@ public class Startup : AppStartup
// 注册启动执行任务 // 注册启动执行任务
services.AddHostedService<StartHostedService>(); services.AddHostedService<StartHostedService>();
services.AddHostedService<MqttHostedService>(); services.AddHostedService<MqttHostedService>();
// 下面代码演示,引入自己的微信息支付信息变化事件处理器
Admin.NET.Core.Service.SysWechatPayService.AddPayEventInterceptor(new WechatPayEventInterceptor(), int.MaxValue);
} }
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) public void Configure(IApplicationBuilder app, IWebHostEnvironment env)

View File

@ -52,7 +52,7 @@
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI"> <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI">
<el-form-item label="@column.ColumnComment" prop="@(@column.LowerPropertyName)"> <el-form-item label="@column.ColumnComment" prop="@(@column.LowerPropertyName)">
<el-select v-model="state.queryParams.@(@column.LowerPropertyName)" filterable placeholder="请选择@(@column.ColumnComment)" clearable @@keyup.enter.native="handleQuery(true)" > <el-select v-model="state.queryParams.@(@column.LowerPropertyName)" filterable placeholder="请选择@(@column.ColumnComment)" clearable @@keyup.enter.native="handleQuery(true)" >
<el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="item.code" :label="`${item.name||''} [${item.code}] ${item.value}`" /> <el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="item.value" :label="`${item.label} [${item.code}] ${item.value}`" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -60,7 +60,7 @@
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI"> <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb5" v-if="state.showAdvanceQueryUI">
<el-form-item label="@column.ColumnComment" prop="@(@column.LowerPropertyName)"> <el-form-item label="@column.ColumnComment" prop="@(@column.LowerPropertyName)">
<el-select v-model="state.queryParams.@(@column.LowerPropertyName)" filterable placeholder="请选择@(@column.ColumnComment)" clearable @@keyup.enter.native="handleQuery(true)" > <el-select v-model="state.queryParams.@(@column.LowerPropertyName)" filterable placeholder="请选择@(@column.ColumnComment)" clearable @@keyup.enter.native="handleQuery(true)" >
<el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="item.value" :label="`${item.name} [${item.code}] ${item.value}`" /> <el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="item.value" :label="`${item.label} [${item.code}] ${item.value}`" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>

View File

@ -25,7 +25,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="DocumentFormat.OpenXml" Version="3.2.0" /> <PackageReference Include="DocumentFormat.OpenXml" Version="3.2.0" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Scripting" Version="4.12.0" /> <PackageReference Include="Microsoft.CodeAnalysis.CSharp.Scripting" Version="4.13.0" />
<PackageReference Include="Rezero.Api" Version="1.7.13" /> <PackageReference Include="Rezero.Api" Version="1.7.13" />
</ItemGroup> </ItemGroup>

View File

@ -2,7 +2,7 @@
"name": "admin.net.pro", "name": "admin.net.pro",
"type": "module", "type": "module",
"version": "2.4.33", "version": "2.4.33",
"lastBuildTime": "2025.02.23", "lastBuildTime": "2025.02.25",
"description": "Admin.NET 站在巨人肩膀上的 .NET 通用权限开发框架", "description": "Admin.NET 站在巨人肩膀上的 .NET 通用权限开发框架",
"author": "zuohuaijun", "author": "zuohuaijun",
"license": "MIT", "license": "MIT",
@ -88,22 +88,22 @@
"@types/node": "^20.17.19", "@types/node": "^20.17.19",
"@types/nprogress": "^0.2.3", "@types/nprogress": "^0.2.3",
"@types/sortablejs": "^1.15.8", "@types/sortablejs": "^1.15.8",
"@typescript-eslint/eslint-plugin": "^8.24.1", "@typescript-eslint/eslint-plugin": "^8.25.0",
"@typescript-eslint/parser": "^8.24.1", "@typescript-eslint/parser": "^8.25.0",
"@vitejs/plugin-vue": "^5.2.1", "@vitejs/plugin-vue": "^5.2.1",
"@vitejs/plugin-vue-jsx": "^4.1.1", "@vitejs/plugin-vue-jsx": "^4.1.1",
"@vue/compiler-sfc": "^3.5.13", "@vue/compiler-sfc": "^3.5.13",
"code-inspector-plugin": "^0.20.0", "code-inspector-plugin": "^0.20.1",
"eslint": "^9.21.0", "eslint": "^9.21.0",
"eslint-plugin-vue": "^9.32.0", "eslint-plugin-vue": "^9.32.0",
"globals": "^16.0.0", "globals": "^16.0.0",
"less": "^4.2.2", "less": "^4.2.2",
"prettier": "^3.5.2", "prettier": "^3.5.2",
"rollup-plugin-visualizer": "^5.14.0", "rollup-plugin-visualizer": "^5.14.0",
"sass": "^1.85.0", "sass": "^1.85.1",
"terser": "^5.39.0", "terser": "^5.39.0",
"typescript": "^5.7.3", "typescript": "^5.7.3",
"vite": "^6.1.1", "vite": "^6.2.0",
"vite-plugin-cdn-import": "^1.0.1", "vite-plugin-cdn-import": "^1.0.1",
"vite-plugin-compression2": "^1.3.3", "vite-plugin-compression2": "^1.3.3",
"vite-plugin-vue-setup-extend": "^0.4.0", "vite-plugin-vue-setup-extend": "^0.4.0",

View File

@ -108,6 +108,14 @@ export interface SysWechatRefund {
*/ */
outRefundNumber: string; outRefundNumber: string;
/**
* 退ID
*
* @type {string}
* @memberof SysWechatRefund
*/
refundId?: string | null;
/** /**
* 退 * 退
* *

View File

@ -269,7 +269,7 @@ const doRefund = async (orderInfo: any) => {
const doRefreshRecord = async (orderInfo: any) => { const doRefreshRecord = async (orderInfo: any) => {
await getAPI(SysWechatPayApi).apiSysWechatPayPayInfoFromWechatTradeIdGet(orderInfo.outTradeNumber); await getAPI(SysWechatPayApi).apiSysWechatPayPayInfoFromWechatTradeIdGet(orderInfo.outTradeNumber);
await handleQuery(); await handleQuery();
} };
// //
const amountFormatter = (row: any, column: any, cellValue: number) => { const amountFormatter = (row: any, column: any, cellValue: number) => {