feat: 初始化后端项目基础架构

添加项目基础配置文件和目录结构
实现用户、角色、权限等核心模块的实体类、Mapper接口和服务层
配置数据库连接和MyBatis-Plus支持
添加统一响应格式和异常处理机制
This commit is contained in:
qingfeng1121
2025-11-24 15:02:19 +08:00
commit 5aa2017eef
84 changed files with 5017 additions and 0 deletions

268
doc/数据库关系图.md Normal file
View File

@@ -0,0 +1,268 @@
# 数据库关系图
下面使用Mermaid语法生成的数据库实体关系图ER图展示了系统中各个表之间的关联关系
```mermaid
erDiagram
%% 用户相关表
users ||--o{ user_details : has
users ||--o{ shops : owns
users ||--o{ orders : places
users ||--o{ payments : makes
users ||--o{ refunds : requests
users ||--o{ shop_ratings : writes
users ||--o{ user_roles : assigned_to
%% 权限相关表
roles ||--o{ user_roles : has
roles ||--o{ role_permissions : contains
permissions ||--o{ role_permissions : included_in
%% 店铺相关表
shops ||--o{ products : sells
shops ||--o{ orders : receives
shops ||--o{ refunds : processes
shops ||--o{ shop_ratings : receives
shop_categories ||--o{ shops : categorizes
shop_categories }o--|| shop_categories : parent
%% 商品相关表
products ||--o{ product_images : has
products ||--o{ product_skus : contains
products ||--o{ product_attribute_values : has
products ||--o{ order_items : included_in
product_categories ||--o{ products : categorizes
product_categories }o--|| product_categories : parent
product_categories ||--o{ product_attributes : defines
product_attributes ||--o{ product_attribute_values : has
product_skus ||--o{ product_inventories : manages
product_skus ||--o{ order_items : selected_in
%% 订单相关表
orders ||--o{ order_items : contains
orders ||--o{ order_status_history : tracks
orders ||--o{ payments : related_to
orders ||--o{ refunds : triggers
orders ||--o{ shop_ratings : based_on
%% 支付与退款相关表
payments ||--o{ refunds : reversed_by
order_items ||--o{ refunds : includes
%% 表定义
users {
BIGINT id PK
VARCHAR username
VARCHAR password
VARCHAR email
VARCHAR phone
INTEGER status
}
user_details {
BIGINT id PK
BIGINT userId FK
VARCHAR realName
VARCHAR idCard
INTEGER gender
}
roles {
BIGINT id PK
VARCHAR roleName
INTEGER roleType
INTEGER status
}
permissions {
BIGINT id PK
VARCHAR permissionName
VARCHAR permissionCode
INTEGER status
}
user_roles {
BIGINT id PK
BIGINT userId FK
BIGINT roleId FK
}
role_permissions {
BIGINT id PK
BIGINT roleId FK
BIGINT permissionId FK
}
shops {
BIGINT id PK
VARCHAR shopName
BIGINT userId FK
BIGINT categoryId FK
INTEGER status
}
shop_categories {
BIGINT id PK
VARCHAR categoryName
BIGINT parentId FK
INTEGER level
INTEGER status
}
products {
BIGINT id PK
VARCHAR productName
BIGINT shopId FK
BIGINT categoryId FK
DECIMAL price
INTEGER stock
INTEGER status
}
product_categories {
BIGINT id PK
VARCHAR categoryName
BIGINT parentId FK
INTEGER level
INTEGER status
}
product_attributes {
BIGINT id PK
VARCHAR attributeName
BIGINT categoryId FK
INTEGER attributeType
INTEGER status
}
product_attribute_values {
BIGINT id PK
BIGINT productId FK
BIGINT attributeId FK
VARCHAR attributeValue
}
product_images {
BIGINT id PK
BIGINT productId FK
VARCHAR imageUrl
INTEGER isMain
}
product_skus {
BIGINT id PK
BIGINT productId FK
VARCHAR skuCode
DECIMAL price
INTEGER stock
INTEGER status
}
product_inventories {
BIGINT id PK
BIGINT skuId FK
INTEGER currentStock
INTEGER safetyStock
INTEGER lockStock
}
orders {
BIGINT id PK
VARCHAR orderNo
BIGINT userId FK
BIGINT shopId FK
DECIMAL totalAmount
INTEGER orderStatus
}
order_items {
BIGINT id PK
BIGINT orderId FK
BIGINT productId FK
BIGINT skuId FK
DECIMAL price
INTEGER quantity
INTEGER itemStatus
}
order_status_history {
BIGINT id PK
BIGINT orderId FK
INTEGER previousStatus
INTEGER currentStatus
}
payments {
BIGINT id PK
VARCHAR paymentNo
BIGINT orderId FK
BIGINT userId FK
DECIMAL amount
INTEGER paymentStatus
}
refunds {
BIGINT id PK
VARCHAR refundNo
BIGINT orderId FK
BIGINT orderItemId FK
BIGINT userId FK
BIGINT shopId FK
DECIMAL refundAmount
INTEGER refundStatus
}
shop_ratings {
BIGINT id PK
BIGINT shopId FK
BIGINT userId FK
BIGINT orderId FK
INTEGER rating
INTEGER status
}
```
## 关系说明
### 一对一关系
- **users 和 user_details**:每个用户只有一个详细信息记录
### 一对多关系
- **users 和 shops**:一个用户可以创建多个店铺
- **shops 和 products**:一个店铺可以有多个商品
- **users 和 orders**:一个用户可以有多个订单
- **shops 和 orders**:一个店铺可以有多个订单
- **orders 和 order_items**:一个订单可以包含多个商品项
- **products 和 product_images**:一个商品可以有多个图片
- **products 和 product_skus**一个商品可以有多个SKU
- **product_skus 和 product_inventories**一个SKU对应一个库存记录
- **orders 和 order_status_history**:一个订单可以有多个状态历史记录
- **orders 和 payments**:一个订单可以有多个支付记录
- **orders 和 refunds**:一个订单可以有多个退款记录
- **order_items 和 refunds**:一个订单项可以有多个退款记录
- **shops 和 shop_ratings**:一个店铺可以有多个评价
- **users 和 shop_ratings**:一个用户可以对多个店铺进行评价
- **orders 和 shop_ratings**:一个订单对应一个店铺评价
### 多对多关系
- **users 和 roles**通过user_roles表关联
- **roles 和 permissions**通过role_permissions表关联
### 自关联关系
- **shop_categories 和 shop_categories**:店铺分类的父子关系
- **product_categories 和 product_categories**:商品分类的父子关系
## 查看方法
要查看此关系图可以使用支持Mermaid语法的工具或编辑器例如
1. **在线工具**
- [Mermaid Live Editor](https://mermaid.live/)
- [Markdown Preview Enhanced](https://shd101wyy.github.io/markdown-preview-enhanced/#/)
2. **IDE插件**
- VS Code的Markdown Preview Enhanced插件
- IntelliJ IDEA的Mermaid插件
3. **版本控制系统**
- GitHub、GitLab等平台已支持Mermaid语法渲染

View File

@@ -0,0 +1,95 @@
# 数据库关系图(简洁版)
下面是使用Mermaid语法生成的简洁版数据库实体关系图重点突出表之间的关联关系
```mermaid
erDiagram
%% 用户与权限系统
users ||--o{ user_details : has
users }o--o{ roles : "多对多" via user_roles
roles }o--o{ permissions : "多对多" via role_permissions
%% 店铺系统
users ||--o{ shops : owns
shops ||--o{ products : sells
shop_categories ||--o{ shops : categorizes
shop_categories }o--|| shop_categories : parent-child
%% 商品系统
products ||--o{ product_images : has
products ||--o{ product_skus : contains
products ||--o{ product_attribute_values : has_attributes
product_categories ||--o{ products : categorizes
product_categories }o--|| product_categories : parent-child
product_categories ||--o{ product_attributes : defines
product_attributes ||--o{ product_attribute_values : values
product_skus ||--o{ product_inventories : inventory
%% 订单系统
users ||--o{ orders : places
shops ||--o{ orders : receives
orders ||--o{ order_items : contains
orders ||--o{ order_status_history : status_history
order_items ||--o{ products : product
order_items ||--o{ product_skus : sku
%% 支付与退款
orders ||--o{ payments : payment
orders ||--o{ refunds : refund
order_items ||--o{ refunds : item_refund
payments ||--o{ refunds : reversed_by
%% 评价系统
users ||--o{ shop_ratings : reviews
shops ||--o{ shop_ratings : rated
orders ||--o{ shop_ratings : based_on
```
## 核心表关系说明
### 1. 用户与权限模块
- **用户-详情**:一对一关系,用户信息和用户详细资料分离存储
- **用户-角色**多对多关系通过user_roles关联表实现
- **角色-权限**多对多关系通过role_permissions关联表实现
### 2. 店铺模块
- **用户-店铺**:一对多关系,一个用户可以创建多个店铺
- **店铺分类-店铺**:一对多关系,一个分类包含多个店铺
- **店铺分类自身**:自关联,支持多级分类结构
### 3. 商品模块
- **店铺-商品**:一对多关系,一个店铺可以销售多个商品
- **商品-图片**:一对多关系,一个商品可以有多张图片
- **商品-SKU**一对多关系一个商品可以有多个SKU库存单元
- **SKU-库存**一对一关系每个SKU对应一个库存记录
- **商品-属性值**:一对多关系,一个商品可以有多个属性值
- **商品分类-商品**:一对多关系,一个分类包含多个商品
- **商品分类-属性**:一对多关系,一个分类定义多个属性
- **属性-属性值**:一对多关系,一个属性可以有多个值
### 4. 订单模块
- **用户-订单**:一对多关系,一个用户可以下多个订单
- **店铺-订单**:一对多关系,一个店铺可以接收多个订单
- **订单-订单项**:一对多关系,一个订单包含多个商品项
- **订单项-商品/SKU**多对一关系订单项关联到具体的商品和SKU
- **订单-状态历史**:一对多关系,记录订单状态变更历史
### 5. 支付与退款模块
- **订单-支付**:一对多关系,一个订单可以有多次支付记录
- **订单-退款**:一对多关系,一个订单可以有多次退款
- **订单项-退款**:一对多关系,一个订单项可以有多次退款
- **支付-退款**:一对多关系,一笔支付可以对应多笔退款
### 6. 评价模块
- **用户-评价**:一对多关系,用户可以对多个店铺评价
- **店铺-评价**:一对多关系,店铺可以收到多个评价
- **订单-评价**:一对一关系,一个订单对应一个评价
## 表关系符号说明
- `||--o{` : 一对一关系1:1
- `||--o{` : 一对多关系1:N
- `}o--o{` : 多对多关系N:M
- `}o--||` : 自关联关系
此简洁版关系图重点突出了系统各模块之间的核心关联,有助于理解整个数据库的设计架构。

View File

@@ -0,0 +1,467 @@
# 数据库表结构与关系文档
## 目录
1. [用户相关表](#用户相关表)
2. [权限相关表](#权限相关表)
3. [店铺相关表](#店铺相关表)
4. [商品相关表](#商品相关表)
5. [订单相关表](#订单相关表)
6. [支付与退款相关表](#支付与退款相关表)
7. [评价相关表](#评价相关表)
8. [表与表之间的关系](#表与表之间的关系)
## 用户相关表
### users表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 用户ID | 主键,自增 |
| username | VARCHAR | 用户名 | 唯一 |
| password | VARCHAR | 密码 | 加密存储 |
| email | VARCHAR | 邮箱 | 唯一 |
| phone | VARCHAR | 手机号 | 唯一 |
| avatar | VARCHAR | 头像URL | |
| status | INTEGER | 状态 | 0:禁用, 1:启用 |
| lastLoginTime | DATE | 最后登录时间 | |
| createdAt | DATE | 创建时间 | |
| updatedAt | DATE | 更新时间 | |
### user_details表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 详情ID | 主键,自增 |
| userId | BIGINT | 用户ID | 外键关联users表 |
| realName | VARCHAR | 真实姓名 | |
| idCard | VARCHAR | 身份证号 | |
| gender | INTEGER | 性别 | |
| birthday | DATE | 生日 | |
| address | VARCHAR | 地址 | |
| createdAt | DATE | 创建时间 | |
| updatedAt | DATE | 更新时间 | |
## 权限相关表
### roles表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 角色ID | 主键,自增 |
| roleName | VARCHAR | 角色名称 | |
| description | VARCHAR | 角色描述 | |
| roleType | INTEGER | 角色类型 | 0:默认用户,1:店主,2:管理员 |
| status | INTEGER | 状态 | 0:禁用, 1:启用 |
| createdAt | DATE | 创建时间 | |
| updatedAt | DATE | 更新时间 | |
### permissions表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 权限ID | 主键,自增 |
| permissionName | VARCHAR | 权限名称 | |
| permissionCode | VARCHAR | 权限编码 | |
| description | VARCHAR | 权限描述 | |
| module | VARCHAR | 所属模块 | |
| status | INTEGER | 状态 | 0:禁用, 1:启用 |
| createdAt | DATE | 创建时间 | |
| updatedAt | DATE | 更新时间 | |
### user_roles表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 关联ID | 主键,自增 |
| userId | BIGINT | 用户ID | 外键关联users表 |
| roleId | BIGINT | 角色ID | 外键关联roles表 |
| createdAt | DATE | 创建时间 | |
### role_permissions表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 关联ID | 主键,自增 |
| roleId | BIGINT | 角色ID | 外键关联roles表 |
| permissionId | BIGINT | 权限ID | 外键关联permissions表 |
| createdAt | DATE | 创建时间 | |
## 店铺相关表
### shops表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 店铺ID | 主键,自增 |
| shopName | VARCHAR | 店铺名称 | |
| userId | BIGINT | 店主用户ID | 外键关联users表 |
| categoryId | BIGINT | 店铺分类ID | 外键关联shop_categories表 |
| logo | VARCHAR | 店铺Logo | |
| coverImage | VARCHAR | 店铺封面图 | |
| description | VARCHAR | 店铺描述 | |
| status | INTEGER | 状态 | 0:待审核, 1:正常, 2:封禁 |
| createdAt | DATE | 创建时间 | |
| updatedAt | DATE | 更新时间 | |
### shop_categories表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 分类ID | 主键,自增 |
| categoryName | VARCHAR | 分类名称 | |
| parentId | BIGINT | 父分类ID | |
| level | INTEGER | 分类级别 | |
| sort | INTEGER | 排序 | |
| status | INTEGER | 状态 | 0:禁用, 1:启用 |
| createdAt | DATE | 创建时间 | |
| updatedAt | DATE | 更新时间 | |
## 商品相关表
### products表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 商品ID | 主键,自增 |
| productName | VARCHAR | 商品名称 | |
| shopId | BIGINT | 店铺ID | 外键关联shops表 |
| categoryId | BIGINT | 商品分类ID | 外键关联product_categories表 |
| brand | VARCHAR | 品牌 | |
| description | VARCHAR | 商品描述 | |
| mainImage | VARCHAR | 主图URL | |
| price | DECIMAL | 价格 | |
| originalPrice | DECIMAL | 原价 | |
| stock | INTEGER | 库存 | |
| sales | INTEGER | 销量 | |
| status | INTEGER | 状态 | 0:下架, 1:上架 |
| createdAt | DATE | 创建时间 | |
| updatedAt | DATE | 更新时间 | |
### product_categories表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 分类ID | 主键,自增 |
| categoryName | VARCHAR | 分类名称 | |
| parentId | BIGINT | 父分类ID | |
| level | INTEGER | 分类级别 | |
| sort | INTEGER | 排序 | |
| status | INTEGER | 状态 | 0:禁用, 1:启用 |
| createdAt | DATE | 创建时间 | |
| updatedAt | DATE | 更新时间 | |
### product_attributes表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 属性ID | 主键,自增 |
| attributeName | VARCHAR | 属性名称 | |
| categoryId | BIGINT | 分类ID | 外键关联product_categories表 |
| attributeType | INTEGER | 属性类型 | 0:普通属性, 1:规格属性 |
| sort | INTEGER | 排序 | |
| status | INTEGER | 状态 | 0:禁用, 1:启用 |
| createdAt | DATE | 创建时间 | |
| updatedAt | DATE | 更新时间 | |
### product_attribute_values表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 属性值ID | 主键,自增 |
| productId | BIGINT | 商品ID | 外键关联products表 |
| attributeId | BIGINT | 属性ID | 外键关联product_attributes表 |
| attributeValue | VARCHAR | 属性值 | |
| sort | INTEGER | 排序 | |
| createdAt | DATE | 创建时间 | |
| updatedAt | DATE | 更新时间 | |
### product_images表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 图片ID | 主键,自增 |
| productId | BIGINT | 商品ID | 外键关联products表 |
| imageUrl | VARCHAR | 图片URL | |
| sort | INTEGER | 排序 | |
| isMain | INTEGER | 是否主图 | 0:非主图, 1:主图 |
| createdAt | DATE | 创建时间 | |
### product_skus表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | SKU ID | 主键,自增 |
| productId | BIGINT | 商品ID | 外键关联products表 |
| skuCode | VARCHAR | SKU编码 | |
| skuSpecs | VARCHAR | SKU规格信息 | JSON格式存储 |
| price | DECIMAL | 价格 | |
| stock | INTEGER | 库存 | |
| image | VARCHAR | 图片 | |
| status | INTEGER | 状态 | 0:禁用, 1:启用 |
| createdAt | DATE | 创建时间 | |
| updatedAt | DATE | 更新时间 | |
### product_inventories表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 库存ID | 主键,自增 |
| skuId | BIGINT | SKU ID | 外键关联product_skus表 |
| currentStock | INTEGER | 当前库存 | |
| safetyStock | INTEGER | 安全库存 | |
| lockStock | INTEGER | 锁定库存 | |
| lastUpdateTime | DATE | 最后更新时间 | |
| createdAt | DATE | 创建时间 | |
| updatedAt | DATE | 更新时间 | |
## 订单相关表
### orders表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 订单ID | 主键,自增 |
| orderNo | VARCHAR | 订单号 | |
| userId | BIGINT | 用户ID | 外键关联users表 |
| shopId | BIGINT | 店铺ID | 外键关联shops表 |
| totalAmount | DECIMAL | 总金额 | |
| actualAmount | DECIMAL | 实际支付金额 | |
| shippingFee | DECIMAL | 运费 | |
| orderStatus | INTEGER | 订单状态 | 0:待付款, 1:待发货, 2:待收货, 3:已完成, 4:已取消, 5:已退款 |
| shippingAddress | VARCHAR | 收货地址 | |
| receiverName | VARCHAR | 收件人姓名 | |
| receiverPhone | VARCHAR | 收件人电话 | |
| paymentMethod | VARCHAR | 支付方式 | |
| paymentTime | DATE | 支付时间 | |
| shippingTime | DATE | 发货时间 | |
| deliveryTime | DATE | 送达时间 | |
| completeTime | DATE | 完成时间 | |
| remark | VARCHAR | 备注 | |
| createdAt | DATE | 创建时间 | |
| updatedAt | DATE | 更新时间 | |
### order_items表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 订单项ID | 主键,自增 |
| orderId | BIGINT | 订单ID | 外键关联orders表 |
| productId | BIGINT | 商品ID | 外键关联products表 |
| skuId | BIGINT | SKU ID | 外键关联product_skus表 |
| productName | VARCHAR | 商品名称 | |
| skuSpecs | VARCHAR | SKU规格 | |
| productImage | VARCHAR | 商品图片 | |
| price | DECIMAL | 价格 | |
| quantity | INTEGER | 数量 | |
| subtotal | DECIMAL | 小计 | |
| itemStatus | INTEGER | 商品状态 | 0:正常, 1:已退款, 2:退款中 |
| createdAt | DATE | 创建时间 | |
| updatedAt | DATE | 更新时间 | |
### order_status_history表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 历史ID | 主键,自增 |
| orderId | BIGINT | 订单ID | 外键关联orders表 |
| previousStatus | INTEGER | 之前状态 | |
| currentStatus | INTEGER | 当前状态 | |
| changeReason | VARCHAR | 变更原因 | |
| operator | VARCHAR | 操作人 | |
| changeTime | DATE | 变更时间 | |
| createdAt | DATE | 创建时间 | |
## 支付与退款相关表
### payments表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 支付ID | 主键,自增 |
| paymentNo | VARCHAR | 支付单号 | |
| orderId | BIGINT | 订单ID | 外键关联orders表 |
| userId | BIGINT | 用户ID | 外键关联users表 |
| amount | DECIMAL | 支付金额 | |
| paymentMethod | VARCHAR | 支付方式 | |
| transactionId | VARCHAR | 第三方交易流水号 | |
| paymentStatus | INTEGER | 支付状态 | 0:待支付, 1:支付成功, 2:支付失败, 3:已退款 |
| paymentUrl | VARCHAR | 支付链接 | |
| expireTime | DATE | 过期时间 | |
| paymentTime | DATE | 支付时间 | |
| createdAt | DATE | 创建时间 | |
| updatedAt | DATE | 更新时间 | |
### refunds表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 退款ID | 主键,自增 |
| refundNo | VARCHAR | 退款单号 | |
| orderId | BIGINT | 订单ID | 外键关联orders表 |
| orderItemId | BIGINT | 订单项ID | 外键关联order_items表 |
| userId | BIGINT | 用户ID | 外键关联users表 |
| shopId | BIGINT | 店铺ID | 外键关联shops表 |
| refundAmount | DECIMAL | 退款金额 | |
| refundReason | VARCHAR | 退款原因 | |
| refundType | VARCHAR | 退款类型 | |
| refundStatus | INTEGER | 退款状态 | 0:申请中, 1:退款成功, 2:退款失败, 3:已拒绝 |
| refundAccount | VARCHAR | 退款账户 | |
| transactionId | VARCHAR | 交易ID | |
| applyTime | DATE | 申请时间 | |
| processTime | DATE | 处理时间 | |
| processRemark | VARCHAR | 处理备注 | |
| createdAt | DATE | 创建时间 | |
| updatedAt | DATE | 更新时间 | |
## 评价相关表
### shop_ratings表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 评价ID | 主键,自增 |
| shopId | BIGINT | 店铺ID | 外键关联shops表 |
| userId | BIGINT | 用户ID | 外键关联users表 |
| orderId | BIGINT | 订单ID | 外键关联orders表 |
| rating | INTEGER | 评分 | 1-5星 |
| content | VARCHAR | 评价内容 | |
| images | VARCHAR | 评价图片 | JSON格式存储 |
| status | INTEGER | 状态 | 0:待审核, 1:已审核, 2:已删除 |
| createdAt | DATE | 创建时间 | |
| updatedAt | DATE | 更新时间 | |
## 表与表之间的关系
### 一对一关系
1. **users 和 user_details**
- 关系:一对一
- 描述:每个用户只有一个详细信息记录
- 外键user_details.userId -> users.id
### 一对多关系
1. **users 和 shops**
- 关系:一对多
- 描述:一个用户可以创建多个店铺(店主)
- 外键shops.userId -> users.id
2. **shops 和 products**
- 关系:一对多
- 描述:一个店铺可以有多个商品
- 外键products.shopId -> shops.id
3. **users 和 orders**
- 关系:一对多
- 描述:一个用户可以有多个订单
- 外键orders.userId -> users.id
4. **shops 和 orders**
- 关系:一对多
- 描述:一个店铺可以有多个订单
- 外键orders.shopId -> shops.id
5. **orders 和 order_items**
- 关系:一对多
- 描述:一个订单可以包含多个商品项
- 外键order_items.orderId -> orders.id
6. **products 和 product_images**
- 关系:一对多
- 描述:一个商品可以有多个图片
- 外键product_images.productId -> products.id
7. **products 和 product_skus**
- 关系:一对多
- 描述一个商品可以有多个SKU
- 外键product_skus.productId -> products.id
8. **product_skus 和 product_inventories**
- 关系:一对一/一对多(实际为一对一)
- 描述一个SKU对应一个库存记录
- 外键product_inventories.skuId -> product_skus.id
9. **orders 和 order_status_history**
- 关系:一对多
- 描述:一个订单可以有多个状态历史记录
- 外键order_status_history.orderId -> orders.id
10. **orders 和 payments**
- 关系:一对多
- 描述:一个订单可以有多个支付记录(如多次支付尝试)
- 外键payments.orderId -> orders.id
11. **orders 和 refunds**
- 关系:一对多
- 描述:一个订单可以有多个退款记录
- 外键refunds.orderId -> orders.id
12. **order_items 和 refunds**
- 关系:一对多
- 描述:一个订单项可以有多个退款记录
- 外键refunds.orderItemId -> order_items.id
13. **shops 和 shop_ratings**
- 关系:一对多
- 描述:一个店铺可以有多个评价
- 外键shop_ratings.shopId -> shops.id
14. **users 和 shop_ratings**
- 关系:一对多
- 描述:一个用户可以对多个店铺进行评价
- 外键shop_ratings.userId -> users.id
15. **orders 和 shop_ratings**
- 关系:一对一
- 描述:一个订单对应一个店铺评价
- 外键shop_ratings.orderId -> orders.id
16. **product_categories 和 products**
- 关系:一对多
- 描述:一个商品分类可以包含多个商品
- 外键products.categoryId -> product_categories.id
17. **shop_categories 和 shops**
- 关系:一对多
- 描述:一个店铺分类可以包含多个店铺
- 外键shops.categoryId -> shop_categories.id
18. **product_categories 和 product_attributes**
- 关系:一对多
- 描述:一个商品分类可以有多个属性
- 外键product_attributes.categoryId -> product_categories.id
19. **products 和 product_attribute_values**
- 关系:一对多
- 描述:一个商品可以有多个属性值
- 外键product_attribute_values.productId -> products.id
20. **product_attributes 和 product_attribute_values**
- 关系:一对多
- 描述:一个属性可以有多个值
- 外键product_attribute_values.attributeId -> product_attributes.id
### 多对多关系
1. **users 和 roles**
- 关系:多对多
- 描述:一个用户可以有多个角色,一个角色可以分配给多个用户
- 关联表user_roles (userId, roleId)
2. **roles 和 permissions**
- 关系:多对多
- 描述:一个角色可以有多个权限,一个权限可以分配给多个角色
- 关联表role_permissions (roleId, permissionId)
### 自关联关系
1. **shop_categories 和 shop_categories**
- 关系:自关联(一对多)
- 描述:店铺分类的父子关系
- 外键shop_categories.parentId -> shop_categories.id
2. **product_categories 和 product_categories**
- 关系:自关联(一对多)
- 描述:商品分类的父子关系
- 外键product_categories.parentId -> product_categories.id