商品属性
商品属性用于维护 SKU 规格维度,例如颜色、尺寸、容量等;属性值用于维护每个维度下的可选值,例如红色、蓝色、128G、256G。RuoYi Office 当前管理端将属性项和属性值放在同一页面左右联动维护。
本页基于 ProductPropertyController、ProductPropertyValueController、管理端 views/mall/product/property 和 API 类型整理。
模块边界
| 层 | 路径 / 接口 |
|---|---|
| 属性项控制器 | controller/admin/property/ProductPropertyController.java |
| 属性值控制器 | controller/admin/property/ProductPropertyValueController.java |
| 管理端页面 | apps/web-antd/src/views/mall/product/property |
| 左侧组件 | modules/property-grid.vue |
| 右侧组件 | modules/value-grid.vue |
| 管理端 API | apps/web-antd/src/api/mall/product/property/index.ts |
| 接口前缀 | /admin-api/product/property、/admin-api/product/property/value |
页面结构
页面左侧维护属性项,右侧根据当前选中的属性项加载属性值。searchPropertyId 是两侧联动的关键状态。
接口清单
| 对象 | 功能 | 接口 | 权限 |
|---|---|---|---|
| 属性项 | 创建 | POST /product/property/create | product:property:create |
| 属性项 | 更新 | PUT /product/property/update | product:property:update |
| 属性项 | 删除 | DELETE /product/property/delete | product:property:delete |
| 属性项 | 分页 | GET /product/property/page | product:property:query |
| 属性项 | 精简列表 | GET /product/property/simple-list | 登录即可 |
| 属性值 | 创建 | POST /product/property/value/create | product:property:create |
| 属性值 | 更新 | PUT /product/property/value/update | product:property:update |
| 属性值 | 删除 | DELETE /product/property/value/delete | product:property:delete |
| 属性值 | 分页 | GET /product/property/value/page | product:property:query |
| 属性值 | 精简列表 | GET /product/property/value/simple-list | 登录即可 |
精简列表通常用于商品表单中选择规格,而分页接口用于属性维护页面。
和 SKU 的关系
商品 SKU 中的 properties 数组保存属性项和属性值快照:
ts
{
propertyId: number;
propertyName: string;
valueId: number;
valueName: string;
}这意味着商品规格不仅依赖属性 ID,也依赖当时的属性名称和值名称。维护属性时要注意:修改属性名称可能影响后续商品编辑体验,但历史订单通常应继续使用订单项快照。
维护建议
- 属性命名尽量通用,例如“颜色”“尺寸”“容量”,避免为单个商品创建过多重复属性。
- 删除属性前先确认是否被 SKU 使用,避免商品编辑时规格无法回显。
- 属性值排序和命名要符合前台展示习惯。
- 多租户场景下要确认属性数据属于当前租户,不要跨租户复用。
- 商品导入或批量维护时,先准备属性项和属性值,再生成 SKU。
排查清单
| 现象 | 优先检查 |
|---|---|
| 右侧属性值为空 | 是否已选中左侧属性项,propertyId 是否传入 |
| 商品规格无法选择 | 属性项/属性值是否存在,精简列表接口是否正常 |
| SKU 回显异常 | SKU properties 中的属性 ID/值 ID 是否仍有效 |
| 删除属性失败 | 是否存在业务引用或权限不足 |
| 不同商品规格混乱 | 是否重复创建近似属性,命名是否统一 |
下一步
维护好属性后,可以在 商品 SPU 与 SKU 中组合 SKU;商品售出后的评价管理请阅读 商品评价。
