diff --git a/admin/src/views/Withdrawals.vue b/admin/src/views/Withdrawals.vue
index 8e8ac7c..7d87bb6 100644
--- a/admin/src/views/Withdrawals.vue
+++ b/admin/src/views/Withdrawals.vue
@@ -97,7 +97,11 @@ async function handleAction(row, action) {
ElMessage.success('操作成功')
loadData()
} catch (e) {
- if (e !== 'cancel' && e?.toString() !== 'cancel') ElMessage.error(e?.response?.data?.message || '操作失败')
+ if (e !== 'cancel' && e?.toString() !== 'cancel') {
+ const data = e?.response?.data
+ const msg = data?.detail ? `${data.message}:${data.detail}` : (data?.message || '操作失败')
+ ElMessage.error({ message: msg, duration: 5000 })
+ }
}
}
@@ -111,7 +115,8 @@ function statusTagType(s) {
function formatTime(str) {
if (!str) return '-'
- const d = new Date(str)
+ // 后端存的是UTC时间,确保正确解析为UTC再转本地时间
+ const d = new Date(typeof str === 'string' && !str.endsWith('Z') ? str + 'Z' : str)
const pad = n => String(n).padStart(2, '0')
return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}`
}
diff --git a/miniapp/pages/help/help.vue b/miniapp/pages/help/help.vue
index 3360eb3..da99388 100644
--- a/miniapp/pages/help/help.vue
+++ b/miniapp/pages/help/help.vue
@@ -41,7 +41,7 @@
3.商品总金额
-
diff --git a/server/Endpoints/EarningEndpoints.cs b/server/Endpoints/EarningEndpoints.cs
index 5ca1479..1dd6c71 100644
--- a/server/Endpoints/EarningEndpoints.cs
+++ b/server/Endpoints/EarningEndpoints.cs
@@ -4,6 +4,7 @@ using CampusErrand.Models.Dtos;
using CampusErrand.Helpers;
using CampusErrand.Services;
using Microsoft.EntityFrameworkCore;
+using System.Text.Json;
namespace CampusErrand.Endpoints;
@@ -245,7 +246,25 @@ public static class EarningEndpoints
if (!transferResult.Success)
{
Console.WriteLine($"[提现] 转账失败: {transferResult.ErrorMessage}");
- return Results.BadRequest(new { code = 400, message = "转账失败,请稍后重试", detail = transferResult.ErrorMessage });
+ // 解析微信错误信息,返回友好提示
+ var friendlyMsg = "转账失败,请稍后重试";
+ try
+ {
+ var errJson = JsonSerializer.Deserialize(transferResult.ErrorMessage ?? "{}");
+ var errCode = errJson.TryGetProperty("code", out var c) ? c.GetString() : "";
+ var errMessage = errJson.TryGetProperty("message", out var m) ? m.GetString() : "";
+ friendlyMsg = errCode switch
+ {
+ "NOT_ENOUGH" => "商户账户余额不足,请充值后重试",
+ "NO_AUTH" => "没有转账权限,请检查商户平台配置",
+ "PARAM_ERROR" => $"参数错误:{errMessage}",
+ "INVALID_REQUEST" => $"请求无效:{errMessage}",
+ "FREQUENCY_LIMIT_EXCEED" => "请求频率超限,请稍后重试",
+ _ => $"转账失败:{errMessage}"
+ };
+ }
+ catch { }
+ return Results.BadRequest(new { code = 400, message = friendlyMsg });
}
// 保存转账信息,等待用户确认收款