v3.5.3版本更新1
CI / verify (pull_request) Has been cancelled

This commit is contained in:
2026-08-20 18:54:15 +08:00
parent ee493823bf
commit fc2e5b65de
65 changed files with 2297 additions and 875 deletions
@@ -1,4 +1,5 @@
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
import { Prisma } from '@prisma/client';
import { AuthUser } from '../guards/jwt-auth.guard';
export const CurrentUser = createParamDecorator(
@@ -7,8 +8,29 @@ export const CurrentUser = createParamDecorator(
},
);
export function serializeBigInt<T>(value: T): T {
return JSON.parse(
JSON.stringify(value, (_k, v) => (typeof v === 'bigint' ? v.toString() : v)),
);
function isPrismaDecimal(value: unknown): value is Prisma.Decimal {
return Prisma.Decimal.isDecimal(value);
}
function convertForJson(value: unknown): unknown {
if (typeof value === 'bigint') return value.toString();
if (isPrismaDecimal(value)) {
const n = Number(value.toString());
return Number.isFinite(n) ? n : 0;
}
if (value instanceof Date) return value.toISOString();
if (Array.isArray(value)) return value.map(convertForJson);
if (value && typeof value === 'object') {
const out: Record<string, unknown> = {};
for (const [k, v] of Object.entries(value as Record<string, unknown>)) {
out[k] = convertForJson(v);
}
return out;
}
return value;
}
/** JSON 安全序列化:bigint → stringPrisma.Decimal → number(避免金额变成 {} 被前端显示成 0) */
export function serializeBigInt<T>(value: T): T {
return JSON.parse(JSON.stringify(convertForJson(value))) as T;
}
@@ -245,6 +245,7 @@ export const SYSTEM_CONFIG_FIELDS: SystemConfigFieldMeta[] = [
key: 'SHARE_HINT',
label: '分享引导文案',
group: G.wechat_mini_share,
subgroup: 'global',
type: 'string',
requiresRestart: false,
placeholder: DEFAULT_SHARE_HINT,
@@ -254,6 +255,7 @@ export const SYSTEM_CONFIG_FIELDS: SystemConfigFieldMeta[] = [
key: 'SHARE_DEFAULT_TITLE',
label: '默认分享标题',
group: G.wechat_mini_share,
subgroup: 'global',
type: 'string',
requiresRestart: false,
placeholder: DEFAULT_SHARE_TITLE,
@@ -263,6 +265,7 @@ export const SYSTEM_CONFIG_FIELDS: SystemConfigFieldMeta[] = [
key: 'SHARE_DEFAULT_DESC',
label: '默认分享描述',
group: G.wechat_mini_share,
subgroup: 'global',
type: 'string',
requiresRestart: false,
placeholder: DEFAULT_SHARE_DESC,
@@ -272,150 +275,170 @@ export const SYSTEM_CONFIG_FIELDS: SystemConfigFieldMeta[] = [
key: 'SHARE_DEFAULT_IMAGE_URL',
label: '默认分享图',
group: G.wechat_mini_share,
subgroup: 'global',
type: 'image',
requiresRestart: false,
description: '各场景未配置图且无业务图时使用;建议接近 5:4',
},
{
key: 'SHARE_HOME_TITLE',
label: '首页 · 标题',
label: '标题',
group: G.wechat_mini_share,
subgroup: 'home',
type: 'string',
requiresRestart: false,
},
{
key: 'SHARE_HOME_DESC',
label: '首页 · 描述',
label: '描述',
group: G.wechat_mini_share,
subgroup: 'home',
type: 'string',
requiresRestart: false,
},
{
key: 'SHARE_HOME_IMAGE_URL',
label: '首页 · 分享图',
label: '分享图',
group: G.wechat_mini_share,
subgroup: 'home',
type: 'image',
requiresRestart: false,
description: '留空则优先用首页首张轮播图,再回退默认分享图',
},
{
key: 'SHARE_STORES_TITLE',
label: '门店列表 · 标题',
label: '标题',
group: G.wechat_mini_share,
subgroup: 'stores',
type: 'string',
requiresRestart: false,
placeholder: DEFAULT_SHARE_STORES_TITLE,
},
{
key: 'SHARE_STORES_DESC',
label: '门店列表 · 描述',
label: '描述',
group: G.wechat_mini_share,
subgroup: 'stores',
type: 'string',
requiresRestart: false,
},
{
key: 'SHARE_STORES_IMAGE_URL',
label: '门店列表 · 分享图',
label: '分享图',
group: G.wechat_mini_share,
subgroup: 'stores',
type: 'image',
requiresRestart: false,
},
{
key: 'SHARE_STORE_DETAIL_TITLE',
label: '门店详情 · 标题',
label: '标题',
group: G.wechat_mini_share,
subgroup: 'storeDetail',
type: 'string',
requiresRestart: false,
description: '留空则用门店名称',
description: '小程序好友/朋友圈分享固定用门店名称;本项仅作其它端回退参考,可留空',
},
{
key: 'SHARE_STORE_DETAIL_DESC',
label: '门店详情 · 描述',
label: '描述',
group: G.wechat_mini_share,
subgroup: 'storeDetail',
type: 'string',
requiresRestart: false,
description: '留空则用门店简介/地址',
},
{
key: 'SHARE_STORE_DETAIL_IMAGE_URL',
label: '门店详情 · 分享图',
label: '分享图',
group: G.wechat_mini_share,
subgroup: 'storeDetail',
type: 'image',
requiresRestart: false,
description: '留空则用门头图/环境图',
description: '小程序分享固定用门头图/环境图;本项可留空',
},
{
key: 'SHARE_BENEFIT_TITLE',
label: '权益页 · 标题',
label: '标题',
group: G.wechat_mini_share,
subgroup: 'benefit',
type: 'string',
requiresRestart: false,
placeholder: DEFAULT_SHARE_BENEFIT_TITLE,
},
{
key: 'SHARE_BENEFIT_DESC',
label: '权益页 · 描述',
label: '描述',
group: G.wechat_mini_share,
subgroup: 'benefit',
type: 'string',
requiresRestart: false,
},
{
key: 'SHARE_BENEFIT_IMAGE_URL',
label: '权益页 · 分享图',
label: '分享图',
group: G.wechat_mini_share,
subgroup: 'benefit',
type: 'image',
requiresRestart: false,
},
{
key: 'SHARE_MINE_TITLE',
label: '我的 · 标题',
label: '标题',
group: G.wechat_mini_share,
subgroup: 'mine',
type: 'string',
requiresRestart: false,
placeholder: DEFAULT_SHARE_MINE_TITLE,
},
{
key: 'SHARE_MINE_DESC',
label: '我的 · 描述',
label: '描述',
group: G.wechat_mini_share,
subgroup: 'mine',
type: 'string',
requiresRestart: false,
},
{
key: 'SHARE_MINE_IMAGE_URL',
label: '我的 · 分享图',
label: '分享图',
group: G.wechat_mini_share,
subgroup: 'mine',
type: 'image',
requiresRestart: false,
},
{
key: 'SHARE_PRODUCT_DETAIL_TITLE',
label: '商品详情 · 标题',
label: '标题',
group: G.wechat_mini_share,
subgroup: 'productDetail',
type: 'string',
requiresRestart: false,
description: '留空则用商品名称',
description: '小程序好友/朋友圈分享固定用商品名称;本项可留空',
},
{
key: 'SHARE_PRODUCT_DETAIL_DESC',
label: '商品详情 · 描述',
label: '描述',
group: G.wechat_mini_share,
subgroup: 'productDetail',
type: 'string',
requiresRestart: false,
description: '留空则用商品副标题',
},
{
key: 'SHARE_PRODUCT_DETAIL_IMAGE_URL',
label: '商品详情 · 分享图',
label: '分享图',
group: G.wechat_mini_share,
subgroup: 'productDetail',
type: 'image',
requiresRestart: false,
description: '留空则用商品主图',
description: '小程序分享固定用商品主图;本项可留空',
},
{
key: 'SHARE_ORDER_DETAIL_TITLE',
label: '订单详情 · 标题',
label: '标题',
group: G.wechat_mini_share,
subgroup: 'orderDetail',
type: 'string',
requiresRestart: false,
placeholder: DEFAULT_SHARE_ORDER_TITLE,
@@ -423,15 +446,17 @@ export const SYSTEM_CONFIG_FIELDS: SystemConfigFieldMeta[] = [
},
{
key: 'SHARE_ORDER_DETAIL_DESC',
label: '订单详情 · 描述',
label: '描述',
group: G.wechat_mini_share,
subgroup: 'orderDetail',
type: 'string',
requiresRestart: false,
},
{
key: 'SHARE_ORDER_DETAIL_IMAGE_URL',
label: '订单详情 · 分享图',
label: '分享图',
group: G.wechat_mini_share,
subgroup: 'orderDetail',
type: 'image',
requiresRestart: false,
},