# 商品中心模块 (ruoyi-mall-product)

## 模块简介

`ruoyi-mall-product` 是商城系统的商品中心模块，负责商品全生命周期管理，包括商品(SPU)、SKU、分类、品牌等核心功能。

## 功能特性

### 1. 商品管理 (SPU)

- ✅ 商品CRUD操作
- ✅ 商品上架/下架
- ✅ 商品浏览量和销量统计
- ✅ 商品详情管理

### 2. SKU管理

- ✅ SKU CRUD操作
- ✅ 库存管理
- ✅ 库存扣减和恢复
- ✅ 规格属性管理

### 3. 商品分类管理 ✅

- ✅ 分类树形结构查询（支持三级分类）
- ✅ 分类CRUD操作（列表、详情、新增、修改、删除）
- ✅ 分类排序
- ✅ 分类导出功能
- ⏳ 分类图标管理（字段已支持，需前端集成文件上传功能）

### 4. 品牌管理 ✅

- ✅ 品牌CRUD操作（列表、详情、新增、修改、删除）
- ✅ 品牌描述管理
- ✅ 品牌排序
- ✅ 品牌状态管理（启用/禁用）
- ✅ 品牌导出功能
- ⏳ 品牌Logo上传（字段已支持，需前端集成文件上传功能）

## 数据库表

- `mall_product` - 商品表
- `mall_sku` - SKU表
- `mall_category` - 商品分类表
- `mall_brand` - 品牌表
- `mall_attribute_template` - 属性模板表
- `mall_attribute` - 属性表
- `mall_attribute_value` - 属性值表
- `mall_product_attribute` - 商品属性关联表

详细表结构请参考：`script/sql/ry_mall.sql`

## 模块结构

```
org.dromara.mall.product
├── controller
│   ├── admin          // 管理端API
│   │   ├── AdminMallCategoryController.java
│   │   ├── AdminMallBrandController.java
│   │   ├── AdminMallAttributeTemplateController.java
│   │   ├── AdminMallAttributeController.java
│   │   ├── AdminMallAttributeValueController.java
│   │   └── AdminMallProductAttributeController.java
│   └── app            // 用户端API
│       ├── AppMallCategoryController.java
│       └── AppMallBrandController.java
├── domain
│   ├── MallCategory.java
│   ├── MallBrand.java
│   ├── MallAttributeTemplate.java
│   ├── MallAttribute.java
│   ├── MallAttributeValue.java
│   ├── MallProductAttribute.java
│   ├── bo             // 业务对象
│   │   ├── MallCategoryBo.java
│   │   ├── MallBrandBo.java
│   │   ├── MallAttributeTemplateBo.java
│   │   ├── MallAttributeBo.java
│   │   ├── MallAttributeValueBo.java
│   │   └── MallProductAttributeBo.java
│   └── vo             // 视图对象
│       ├── MallCategoryVo.java
│       ├── MallBrandVo.java
│       ├── MallAttributeTemplateVo.java
│       ├── MallAttributeVo.java
│       ├── MallAttributeValueVo.java
│       └── MallProductAttributeVo.java
├── mapper
│   ├── MallCategoryMapper.java
│   ├── MallBrandMapper.java
│   ├── MallAttributeTemplateMapper.java
│   ├── MallAttributeMapper.java
│   ├── MallAttributeValueMapper.java
│   └── MallProductAttributeMapper.java
├── service
│   ├── MallCategoryService.java
│   ├── MallBrandService.java
│   ├── MallAttributeTemplateService.java
│   ├── MallAttributeService.java
│   ├── MallAttributeValueService.java
│   ├── MallProductAttributeService.java
│   └── impl
│       ├── MallCategoryServiceImpl.java
│       ├── MallBrandServiceImpl.java
│       ├── MallAttributeTemplateServiceImpl.java
│       ├── MallAttributeServiceImpl.java
│       ├── MallAttributeValueServiceImpl.java
│       └── MallProductAttributeServiceImpl.java
├── enums              // 枚举类
│   └── AttributeType.java
└── config
    └── MallProductAutoConfiguration.java
```

## 依赖模块

- `ruoyi-common-*` - 通用工具模块

## API接口

### 管理端接口

#### 商品分类管理 (`/mall/product/category`)

- `GET /mall/product/category/list` - 查询商品分类列表（分页）
- `GET /mall/product/category/tree` - 查询商品分类树形列表
- `GET /mall/product/category/{id}` - 获取商品分类详情
- `POST /mall/product/category` - 新增商品分类
- `PUT /mall/product/category` - 修改商品分类
- `DELETE /mall/product/category/{ids}` - 删除商品分类
- `POST /mall/product/category/export` - 导出商品分类列表

#### 品牌管理 (`/mall/product/brand`)

- `GET /mall/product/brand/list` - 查询品牌列表（分页）
- `GET /mall/product/brand/{id}` - 获取品牌详情
- `POST /mall/product/brand` - 新增品牌
- `PUT /mall/product/brand` - 修改品牌
- `DELETE /mall/product/brand/{ids}` - 删除品牌
- `POST /mall/product/brand/export` - 导出品牌列表

### 移动端接口

#### 商品分类 (`/app/mall/product/category`)

- `GET /app/mall/product/category/tree` - 查询商品分类树形列表（仅启用分类）

#### 品牌 (`/app/mall/product/brand`)

- `GET /app/mall/product/brand/list` - 查询品牌列表（仅启用品牌）

#### 属性模板管理 (`/mall/product/attribute/template`)

- `GET /mall/product/attribute/template/list` - 查询属性模板列表（分页）
- `GET /mall/product/attribute/template/{id}` - 获取属性模板详情
- `POST /mall/product/attribute/template` - 新增属性模板
- `PUT /mall/product/attribute/template` - 修改属性模板
- `DELETE /mall/product/attribute/template/{ids}` - 删除属性模板
- `POST /mall/product/attribute/template/export` - 导出属性模板列表

#### 属性管理 (`/mall/product/attribute`)

- `GET /mall/product/attribute/list` - 查询属性列表（分页）
- `GET /mall/product/attribute/{id}` - 获取属性详情
- `GET /mall/product/attribute/template/{templateId}` - 根据模板ID查询属性列表
- `POST /mall/product/attribute` - 新增属性
- `PUT /mall/product/attribute` - 修改属性
- `DELETE /mall/product/attribute/{ids}` - 删除属性
- `POST /mall/product/attribute/export` - 导出属性列表

#### 属性值管理 (`/mall/product/attribute/value`)

- `GET /mall/product/attribute/value/list` - 查询属性值列表（分页）
- `GET /mall/product/attribute/value/{id}` - 获取属性值详情
- `GET /mall/product/attribute/value/attribute/{attributeId}` - 根据属性ID查询属性值列表
- `POST /mall/product/attribute/value` - 新增属性值
- `PUT /mall/product/attribute/value` - 修改属性值
- `DELETE /mall/product/attribute/value/{ids}` - 删除属性值
- `POST /mall/product/attribute/value/export` - 导出属性值列表

#### 商品属性关联管理 (`/mall/product/attribute/product`)

- `GET /mall/product/attribute/product/{id}` - 获取商品属性关联详情
- `GET /mall/product/attribute/product/product/{productId}` - 根据商品ID查询商品属性关联列表
- `POST /mall/product/attribute/product` - 新增商品属性关联
- `POST /mall/product/attribute/product/batch` - 批量新增商品属性关联
- `POST /mall/product/attribute/product/product/{productId}` - 保存商品属性关联（先删除旧的，再插入新的）
- `PUT /mall/product/attribute/product` - 修改商品属性关联
- `DELETE /mall/product/attribute/product/{ids}` - 删除商品属性关联
- `DELETE /mall/product/attribute/product/product/{productId}` - 根据商品ID删除商品属性关联

### 5. 商品属性管理 ✅

- ✅ 属性模板管理
    - ✅ 属性模板CRUD操作
    - ✅ 属性模板绑定分类（可选）
    - ✅ 属性模板导出功能
- ✅ 属性管理
    - ✅ 属性CRUD操作
    - ✅ 属性类型管理（文本、数字、日期、枚举）
    - ✅ 属性绑定模板（可选）
    - ✅ 属性必填设置
    - ✅ 属性导出功能
- ✅ 属性值管理
    - ✅ 属性值CRUD操作
    - ✅ 属性值绑定属性
    - ✅ 属性值排序
    - ✅ 属性值导出功能
- ✅ 商品属性关联
    - ✅ 商品关联属性值
    - ✅ 批量保存商品属性
    - ✅ 根据商品ID查询属性
    - ✅ 支持枚举类型属性值选择
    - ✅ 支持文本/数字/日期类型自定义值

## 待实现功能
    - [ ] 规格模板定义
    - [ ] 规格值管理
    - [ ] 规格模板与商品关联
- [ ] 商品搜索功能
    - [ ] 全文搜索（集成Elasticsearch或类似方案）
    - [ ] 商品筛选（按分类、品牌、价格等）
