Files
MTKJPAY/mt-pay/database/README_PRODUCT.md
qiube 19b53f0ed1 feat(config): 初始化项目配置文件
- 添加 application.yml 主配置文件,配置 Spring、Druid、MyBatis-Plus 等基础设置
- 添加 application-dev.yml 开发环境配置,配置数据源及 PingPong 沙箱参数
- 添加数据库建表及配置说明文档(README.md、README_DATABASE.md、README_PRODUCT.md)
- 添加商品表结构定义及示例数据说明
- 添加支付相关枚举类 RecordType 和充值信息 DTO RechargeDTO
- 添加日志文件 mt-pay.2025-12-19.log 用于记录系统启动异常信息
2025-12-22 10:18:59 +08:00

4.0 KiB
Raw Blame History

商品表结构说明

表名规范

所有表名使用 mt_ 前缀,如:

  • mt_product - 商品表
  • mt_product_sku - 商品SKU表

表结构

1. mt_product商品表

字段说明:

字段名 类型 说明 备注
id BIGINT 商品ID 主键,自增
name VARCHAR(255) 商品名称 必填
price DECIMAL(12,2) 商品价格 基础价格默认0.00
main_image VARCHAR(4000) 主图URL 可选
status VARCHAR(20) 商品状态 ACTIVE-上架INACTIVE-下架DELETED-已删除
shop_id BIGINT 店铺ID 必填,关联店铺
create_time DATETIME 创建时间 自动填充
update_time DATETIME 更新时间 自动更新

索引:

  • 主键:id
  • 普通索引:shop_idstatuscreate_time

排序规则:

  • 使用 utf8mb4_general_ci 排序规则

2. mt_product_sku商品SKU表

字段说明:

字段名 类型 说明 备注
id BIGINT SKU ID 主键,自增
product_id BIGINT 商品ID 外键关联mt_product
sku VARCHAR(2000) SKU编码 必填
price DECIMAL(12,2) 价格 必填
currency VARCHAR(3) 货币 ISO 4217代码默认USD
stock INT 库存数量 默认0
sales_attrs LONGTEXT 销售属性 JSON格式[{"name":"颜色","value":"红色"}]
sku_image VARCHAR(4000) SKU图片URL 可选
weight DECIMAL(10,2) 重量 单位:克
size VARCHAR(200) 大小/尺寸 JSON格式{"length":10,"width":5,"height":3}
specification VARCHAR(2000) 规格 文本描述
status VARCHAR(20) SKU状态 ACTIVE-启用INACTIVE-禁用
create_time DATETIME 创建时间 自动填充
update_time DATETIME 更新时间 自动更新

索引:

  • 主键:id
  • 普通索引:product_idstatus
  • 外键:product_idmt_product.id(级联删除)

数据示例

商品示例

INSERT INTO `mt_product` (`name`, `price`, `main_image`, `status`, `shop_id`) 
VALUES ('Macaron 马卡龙礼盒装', 20.00, 'https://example.com/image.jpg', 'ACTIVE', 1);

SKU示例

-- SKU 1粉色6枚装
INSERT INTO `mt_product_sku` (
    `product_id`, `sku`, `price`, `currency`, `stock`, 
    `sales_attrs`, `sku_image`, `weight`, `size`, `specification`, `status`
) VALUES (
    1, 'SKU001', 18.00, 'USD', 50,
    '[{"name":"颜色","value":"粉色"},{"name":"规格","value":"6枚装"}]',
    'https://example.com/pink-6pcs.jpg', 500.00,
    '{"length":20,"width":15,"height":5}',
    '6枚装马卡龙礼盒', 'ACTIVE'
);

-- SKU 2蓝色12枚装
INSERT INTO `mt_product_sku` (
    `product_id`, `sku`, `price`, `currency`, `stock`, 
    `sales_attrs`, `sku_image`, `weight`, `size`, `specification`, `status`
) VALUES (
    1, 'SKU002', 20.00, 'USD', 100,
    '[{"name":"颜色","value":"蓝色"},{"name":"规格","value":"12枚装"}]',
    'https://example.com/blue-12pcs.jpg', 800.00,
    '{"length":25,"width":20,"height":8}',
    '12枚装马卡龙礼盒', 'ACTIVE'
);

JSON字段格式说明

sales_attrs销售属性

[
  {"name": "颜色", "value": "粉色"},
  {"name": "规格", "value": "6枚装"}
]

size尺寸

{
  "length": 20,
  "width": 15,
  "height": 5,
  "unit": "cm"
}

执行SQL

# 在MySQL中执行
mysql -u用户名 -p密码 数据库名 < mt_product_schema.sql

或在MySQL客户端中

SOURCE /path/to/mt_product_schema.sql;

注意事项

  1. 字符集:使用 utf8mb4 字符集支持emoji和特殊字符
  2. 排序规则:使用 utf8mb4_unicode_ci
  3. 存储引擎:使用 InnoDB,支持事务和外键
  4. 外键约束删除商品时会级联删除所有SKU
  5. SKU字段sku 字段最大2000字符不再设置唯一索引可根据业务需求决定是否唯一
  6. JSON字段sales_attrssize 字段存储JSON格式数据需要应用层进行解析