Files
TaoTaoWang_backend/doc/数据库表结构与关系文档.md
qingfeng1121 51086db30e feat: 添加用户登录服务及JWT认证功能
refactor: 重构实体类并添加Lombok注解

docs: 更新数据库表结构文档

style: 清理无用代码并优化格式

fix: 修复用户详情服务中的联系方式更新方法

build: 更新pom.xml配置并添加Lombok插件

test: 添加用户登录测试用例

chore: 添加开发和生产环境配置文件
2025-11-28 14:14:38 +08:00

480 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 数据库表结构与关系文档
## 目录
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 | VARCHAR | 性别 | 男、女、保密 |
| birthday | DATE | 生日 | |
| address | VARCHAR | 地址 | |
| province | VARCHAR | 省份 | |
| city | VARCHAR | 城市 | |
| district | 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表 |
| shopLogo | VARCHAR | 店铺Logo | |
| coverImage | VARCHAR | 店铺封面图 | |
| description | VARCHAR | 店铺描述 | |
| address | VARCHAR | 店铺地址 | |
| contactPhone | VARCHAR | 联系电话 | |
| contactPerson | VARCHAR | 联系人 | |
| rating | DECIMAL | 店铺评分 | |
| salesVolume | INTEGER | 销量 | |
| status | INTEGER | 状态 | 0: 未审核, 1: 已审核, 2: 已关闭, 3: 审核失败 |
| businessLicense | VARCHAR | 营业执照 | |
| businessStartTime | DATE | 营业时间开始 | |
| businessEndTime | DATE | 营业时间结束 | |
| createdAt | DATE | 创建时间 | |
| updatedAt | DATE | 更新时间 | |
### shop_categories表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 分类ID | 主键,自增 |
| categoryName | VARCHAR | 分类名称 | |
| parentId | BIGINT | 父分类ID | 顶级分类为0 |
| level | INTEGER | 分类级别 | |
| icon | VARCHAR | 分类图标 | |
| 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表 |
| description | VARCHAR | 商品描述 | |
| mainImage | VARCHAR | 主图URL | |
| originalPrice | DECIMAL | 原价 | |
| currentPrice | DECIMAL | 当前价格 | |
| salesVolume | INTEGER | 销量 | |
| status | INTEGER | 状态 | 0:下架, 1:上架 |
| isDeleted | INTEGER | 是否删除 | 0: 未删除, 1: 已删除 |
| createdAt | DATE | 创建时间 | |
| updatedAt | DATE | 更新时间 | |
### product_categories表
| 字段名 | 类型 | 描述 | 备注 |
| :--- | :--- | :--- | :--- |
| id | BIGINT | 分类ID | 主键,自增 |
| categoryName | VARCHAR | 分类名称 | |
| parentId | BIGINT | 父分类ID | 顶级分类为0 |
| level | INTEGER | 分类级别 | 1、2、3 |
| icon | VARCHAR | 分类图标 | |
| banner | VARCHAR | 分类横幅 | |
| 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 | 排序 | |
| 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