优化购物车关联名称展示

This commit is contained in:
czl231
2026-08-16 00:06:07 +08:00
parent 0b6e7b0598
commit 26cd78ac12
4 changed files with 76 additions and 1 deletions

View File

@@ -79,6 +79,29 @@ for (const [key, label] of [
}
}
// 购物车关联列必须展示用户和商品名称UUID仅作为复制与排障信息保留。
const cartDefinition = resources.match(
/define\('ec_cart',[\s\S]*?\n\s*\]\),/,
)?.[0];
if (!cartDefinition) throw new Error('无法读取购物车资源定义');
for (const [key, label] of [
['user_account_identity', '用户'],
['ec_product_identity', '商品'],
]) {
const field = cartDefinition.match(
new RegExp(`relation\\('${key}'[\\s\\S]*?\\}\\)`),
)?.[0];
if (
!field ||
!field.includes(`listLabel: '${label}'`) ||
!field.includes('listRelationNameOnly: true') ||
!field.includes('displayRelationLabel: true') ||
!field.includes('showIdentityCopy: true')
) {
throw new Error(`购物车的${label}列必须以业务名称展示并保留唯一标识复制入口`);
}
}
if (/title="ID"|data-index="id"/.test(listPage)) {
throw new Error('标准资源列表不得把数据库ID作为业务列展示');
}

View File

@@ -695,7 +695,14 @@ export const resources: ResourceUiDefinition[] = [
define('ec_product_attribute', '商品属性', 'writable', [relation('ec_product_identity', '/ec_product', true), f('name', { required: true }), f('value', { required: true }), f('sort_no')]),
define('ec_product_image', '商品图片', 'writable', [relation('ec_product_identity', '/ec_product', true), f('image_uri', { required: true }), f('sort_no'), f('is_cover')]),
define('ec_cart', '购物车', 'readonly', [
relation('user_account_identity', '/user_account'), relation('ec_product_identity', '/ec_product'),
relation('user_account_identity', '/user_account', false, {
label: '用户', listLabel: '用户', listRelationNameOnly: true,
displayRelationLabel: true, showIdentityCopy: true,
}),
relation('ec_product_identity', '/ec_product', false, {
label: '商品', listLabel: '商品', listRelationNameOnly: true,
displayRelationLabel: true, showIdentityCopy: true,
}),
f('quantity'), f('selected'),
]),
define('ec_order', '商城订单', 'readonly', [