chore: 更新数据库脚本适配新增模块

- 更新 schema.sql 添加用户地址、收藏、评价、订单项表结构
- 更新测试数据和演示用户脚本
This commit is contained in:
2026-03-10 23:21:01 +08:00
parent 6788fcd5ea
commit 9f1c5f837e
5 changed files with 156 additions and 44 deletions

View File

@@ -4,12 +4,12 @@
USE flash_sale_db;
-- 插入演示用户(密码已加密)
INSERT INTO users (username, password, email, phone, status, created_at, updated_at)
VALUES ('demo1', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2uheWG/igi.', 'demo1@example.com', '13800138001', 1,
INSERT INTO users (username, password, email, phone, role, status, created_at, updated_at)
VALUES ('demo1', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2uheWG/igi.', 'demo1@example.com', '13800138001', 'USER', 1,
NOW(), NOW()),
('demo2', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2uheWG/igi.', 'demo2@example.com', '13800138002', 1,
('demo2', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2uheWG/igi.', 'demo2@example.com', '13800138002', 'USER', 1,
NOW(), NOW()),
('admin', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'admin@example.com', '13800138000', 1,
('admin', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'admin@example.com', '13800138000', 'ADMIN', 1,
NOW(), NOW())
ON DUPLICATE KEY UPDATE username = VALUES(username),
email = VALUES(email),

View File

@@ -11,12 +11,12 @@ WHERE username IN ('demo1', 'demo2', 'admin');
-- 插入正确的演示用户
-- demo1/demo2 密码: 123456
-- admin 密码: admin123
INSERT INTO users (username, password, email, phone, status, created_at, updated_at)
VALUES ('demo1', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'demo1@example.com', '13800138001', 1,
INSERT INTO users (username, password, email, phone, role, status, created_at, updated_at)
VALUES ('demo1', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'demo1@example.com', '13800138001', 'USER', 1,
NOW(), NOW()),
('demo2', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'demo2@example.com', '13800138002', 1,
('demo2', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'demo2@example.com', '13800138002', 'USER', 1,
NOW(), NOW()),
('admin', '$2a$10$DOwVJZHH.5PkZKJKJKJKJOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'admin@example.com', '13800138000', 1,
('admin', '$2a$10$DOwVJZHH.5PkZKJKJKJKJOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'admin@example.com', '13800138000', 'ADMIN', 1,
NOW(), NOW());
-- 验证插入结果

View File

@@ -15,6 +15,8 @@ CREATE TABLE IF NOT EXISTS users
password VARCHAR(255) NOT NULL COMMENT '密码(加密)',
email VARCHAR(100) COMMENT '邮箱',
phone VARCHAR(20) COMMENT '手机号',
avatar VARCHAR(500) COMMENT '头像',
role VARCHAR(20) DEFAULT 'USER' COMMENT '角色ADMIN/USER',
status TINYINT DEFAULT 1 COMMENT '状态1-正常0-禁用',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
@@ -37,6 +39,7 @@ CREATE TABLE IF NOT EXISTS products
name VARCHAR(200) NOT NULL COMMENT '商品名称',
description TEXT COMMENT '商品描述',
price DECIMAL(10, 2) NOT NULL COMMENT '商品价格',
category VARCHAR(100) COMMENT '商品分类',
stock INT NOT NULL DEFAULT 0 COMMENT '库存数量',
image_url VARCHAR(500) COMMENT '商品图片URL',
status TINYINT DEFAULT 1 COMMENT '状态1-上架0-下架',
@@ -82,15 +85,25 @@ CREATE TABLE IF NOT EXISTS flash_sales
-- ================================
CREATE TABLE IF NOT EXISTS orders
(
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '订单ID',
user_id BIGINT NOT NULL COMMENT '用户ID',
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '订单ID',
order_no VARCHAR(64) NOT NULL UNIQUE COMMENT '订单号',
group_no VARCHAR(64) COMMENT '聚合订单号',
user_id BIGINT NOT NULL COMMENT '用户ID',
product_id BIGINT NOT NULL COMMENT '商品ID',
quantity INT NOT NULL DEFAULT 1 COMMENT '购买数量',
total_price DECIMAL(10, 2) NOT NULL COMMENT '总价',
status TINYINT DEFAULT 1 COMMENT '状态1-待支付2-已支付3-已发货4-已完成5-已取消',
order_type TINYINT DEFAULT 1 COMMENT '订单类型1-普通订单2-秒杀订单',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
status TINYINT DEFAULT 1 COMMENT '状态1-待支付2-已支付3-已发货4-已完成5-已取消',
order_type TINYINT DEFAULT 1 COMMENT '订单类型1-普通订单2-秒杀订单',
receiver_name VARCHAR(100) COMMENT '收货人',
receiver_phone VARCHAR(20) COMMENT '收货手机号',
receiver_address VARCHAR(255) COMMENT '收货地址',
remark VARCHAR(255) COMMENT '订单备注',
payment_method VARCHAR(50) COMMENT '支付方式',
paid_at TIMESTAMP NULL COMMENT '支付时间',
shipped_at TIMESTAMP NULL COMMENT '发货时间',
completed_at TIMESTAMP NULL COMMENT '完成时间',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE,
FOREIGN KEY (product_id) REFERENCES products (id) ON DELETE CASCADE,
@@ -104,8 +117,107 @@ CREATE TABLE IF NOT EXISTS orders
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT ='订单表';
-- ================================
-- 5. 创建视图(可选)
-- 5. 订单明细表
-- ================================
CREATE TABLE IF NOT EXISTS order_items
(
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '明细ID',
order_id BIGINT NOT NULL COMMENT '主订单ID',
product_id BIGINT NOT NULL COMMENT '商品ID',
product_name VARCHAR(200) NOT NULL COMMENT '商品名称快照',
product_image_url VARCHAR(500) COMMENT '商品图片快照',
price DECIMAL(10, 2) NOT NULL COMMENT '下单单价',
quantity INT NOT NULL COMMENT '购买数量',
subtotal DECIMAL(10, 2) NOT NULL COMMENT '小计',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
FOREIGN KEY (order_id) REFERENCES orders (id) ON DELETE CASCADE,
FOREIGN KEY (product_id) REFERENCES products (id) ON DELETE CASCADE,
INDEX idx_order_items_order_id (order_id),
INDEX idx_order_items_product_id (product_id)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT ='订单明细表';
-- ================================
-- 6. 用户地址表
-- ================================
CREATE TABLE IF NOT EXISTS user_addresses
(
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '地址ID',
user_id BIGINT NOT NULL COMMENT '用户ID',
name VARCHAR(100) NOT NULL COMMENT '收货人',
phone VARCHAR(20) NOT NULL COMMENT '手机号',
province VARCHAR(50) COMMENT '省份',
city VARCHAR(50) COMMENT '城市',
district VARCHAR(50) COMMENT '区县',
address VARCHAR(255) NOT NULL COMMENT '详细地址',
is_default TINYINT DEFAULT 0 COMMENT '是否默认地址',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE,
INDEX idx_address_user_id (user_id),
INDEX idx_address_default (is_default)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT ='用户地址表';
-- ================================
-- 7. 商品评价表
-- ================================
CREATE TABLE IF NOT EXISTS product_reviews
(
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '评价ID',
product_id BIGINT NOT NULL COMMENT '商品ID',
user_id BIGINT NOT NULL COMMENT '用户ID',
order_id BIGINT NOT NULL COMMENT '订单ID',
rating TINYINT NOT NULL DEFAULT 5 COMMENT '评分',
content TEXT NOT NULL COMMENT '评价内容',
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态1-显示0-隐藏',
admin_reply TEXT COMMENT '管理员回复',
replied_at TIMESTAMP NULL COMMENT '回复时间',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
FOREIGN KEY (product_id) REFERENCES products (id) ON DELETE CASCADE,
FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE,
FOREIGN KEY (order_id) REFERENCES orders (id) ON DELETE CASCADE,
INDEX idx_review_product_id (product_id),
INDEX idx_review_user_id (user_id),
UNIQUE KEY uk_review_order_user (order_id, user_id)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT ='商品评价表';
-- ================================
-- 8. 用户收藏表
-- ================================
CREATE TABLE IF NOT EXISTS user_favorites
(
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '收藏ID',
user_id BIGINT NOT NULL COMMENT '用户ID',
product_id BIGINT NOT NULL COMMENT '商品ID',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE,
FOREIGN KEY (product_id) REFERENCES products (id) ON DELETE CASCADE,
UNIQUE KEY uk_favorite_user_product (user_id, product_id),
INDEX idx_favorite_user_id (user_id),
INDEX idx_favorite_product_id (product_id)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT ='用户收藏表';
-- ================================
-- 9. 创建视图(可选)
-- ================================
-- 活跃秒杀活动视图

View File

@@ -21,60 +21,60 @@ USE flash_sale_db;
-- 1. 插入测试用户数据
-- ================================
INSERT INTO users (username, password, email, phone, status, created_at, updated_at)
INSERT INTO users (username, password, email, phone, role, status, created_at, updated_at)
VALUES
-- 演示账号(密码都是明文,实际应用中应该加密)
('demo1', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'demo1@example.com', '13800138001', 1, NOW(),
('demo1', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'demo1@example.com', '13800138001', 'USER', 1, NOW(),
NOW()),
('demo2', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'demo2@example.com', '13800138002', 1, NOW(),
('demo2', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'demo2@example.com', '13800138002', 'USER', 1, NOW(),
NOW()),
('admin', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'admin@example.com', '13800138000', 1, NOW(),
('admin', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'admin@example.com', '13800138000', 'ADMIN', 1, NOW(),
NOW()),
-- 普通测试用户
('testuser1', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'test1@example.com', '13800138003', 1,
('testuser1', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'test1@example.com', '13800138003', 'USER', 1,
NOW(), NOW()),
('testuser2', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'test2@example.com', '13800138004', 1,
('testuser2', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'test2@example.com', '13800138004', 'USER', 1,
NOW(), NOW()),
('testuser3', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'test3@example.com', '13800138005', 1,
('testuser3', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'test3@example.com', '13800138005', 'USER', 1,
NOW(), NOW()),
('testuser4', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'test4@example.com', '13800138006', 1,
('testuser4', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'test4@example.com', '13800138006', 'USER', 1,
NOW(), NOW()),
('testuser5', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'test5@example.com', '13800138007', 1,
('testuser5', '$2a$10$N.zmdr9k7uOkXUJEkKWZaOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'test5@example.com', '13800138007', 'USER', 1,
NOW(), NOW());
-- ================================
-- 2. 插入测试商品数据
-- ================================
INSERT INTO products (name, description, price, stock, image_url, status, created_at, updated_at)
INSERT INTO products (name, description, price, category, stock, image_url, status, created_at, updated_at)
VALUES
-- 电子产品类
('iPhone 15 Pro Max', '苹果最新旗舰手机A17 Pro芯片钛金属设计', 9999.00, 100, '/images/iphone15.jpg', 1, NOW(), NOW()),
('MacBook Pro 16英寸', 'M3 Max芯片36GB内存1TB存储', 25999.00, 50, '/images/macbook.jpg', 1, NOW(), NOW()),
('iPad Air', '10.9英寸液晶显示屏M1芯片', 4399.00, 80, '/images/ipad.jpg', 1, NOW(), NOW()),
('AirPods Pro 2', '主动降噪无线耳机,空间音频', 1899.00, 200, '/images/airpods.jpg', 1, NOW(), NOW()),
('Apple Watch Series 9', '健康监测GPS+蜂窝网络', 3199.00, 150, '/images/watch.jpg', 1, NOW(), NOW()),
('iPhone 15 Pro Max', '苹果最新旗舰手机A17 Pro芯片钛金属设计', 9999.00, '电子产品', 100, '/images/iphone15.jpg', 1, NOW(), NOW()),
('MacBook Pro 16英寸', 'M3 Max芯片36GB内存1TB存储', 25999.00, '电子产品', 50, '/images/macbook.jpg', 1, NOW(), NOW()),
('iPad Air', '10.9英寸液晶显示屏M1芯片', 4399.00, '电子产品', 80, '/images/ipad.jpg', 1, NOW(), NOW()),
('AirPods Pro 2', '主动降噪无线耳机,空间音频', 1899.00, '电子产品', 200, '/images/airpods.jpg', 1, NOW(), NOW()),
('Apple Watch Series 9', '健康监测GPS+蜂窝网络', 3199.00, '电子产品', 150, '/images/watch.jpg', 1, NOW(), NOW()),
-- 家电类
('小米电视 65英寸', '4K超高清120Hz刷新率', 2999.00, 60, '/images/tv.jpg', 1, NOW(), NOW()),
('戴森吸尘器 V15', '激光显微尘,强劲吸力', 4690.00, 40, '/images/dyson.jpg', 1, NOW(), NOW()),
('美的空调 1.5匹', '变频节能,静音运行', 2599.00, 80, '/images/airconditioner.jpg', 1, NOW(), NOW()),
('小米电视 65英寸', '4K超高清120Hz刷新率', 2999.00, '家电', 60, '/images/tv.jpg', 1, NOW(), NOW()),
('戴森吸尘器 V15', '激光显微尘,强劲吸力', 4690.00, '家电', 40, '/images/dyson.jpg', 1, NOW(), NOW()),
('美的空调 1.5匹', '变频节能,静音运行', 2599.00, '家电', 80, '/images/airconditioner.jpg', 1, NOW(), NOW()),
-- 服装类
('Nike Air Jordan 1', '经典篮球鞋,限量版配色', 1299.00, 120, '/images/jordan.jpg', 1, NOW(), NOW()),
('Adidas Ultra Boost', '缓震跑鞋Boost中底', 1599.00, 100, '/images/ultraboost.jpg', 1, NOW(), NOW()),
('Nike Air Jordan 1', '经典篮球鞋,限量版配色', 1299.00, '服饰鞋包', 120, '/images/jordan.jpg', 1, NOW(), NOW()),
('Adidas Ultra Boost', '缓震跑鞋Boost中底', 1599.00, '服饰鞋包', 100, '/images/ultraboost.jpg', 1, NOW(), NOW()),
-- 图书类
('深入理解Java虚拟机', 'JVM原理与实践第3版', 89.00, 500, '/images/jvm-book.jpg', 1, NOW(), NOW()),
('Redis设计与实现', 'Redis内部机制详解', 79.00, 300, '/images/redis-book.jpg', 1, NOW(), NOW()),
('深入理解Java虚拟机', 'JVM原理与实践第3版', 89.00, '图书音像', 500, '/images/jvm-book.jpg', 1, NOW(), NOW()),
('Redis设计与实现', 'Redis内部机制详解', 79.00, '图书音像', 300, '/images/redis-book.jpg', 1, NOW(), NOW()),
-- 食品类
('茅台酒 53度 500ml', '国酒茅台,收藏佳品', 2680.00, 30, '/images/maotai.jpg', 1, NOW(), NOW()),
('五常大米 10kg', '东北优质大米,香甜可口', 168.00, 200, '/images/rice.jpg', 1, NOW(), NOW()),
('茅台酒 53度 500ml', '国酒茅台,收藏佳品', 2680.00, '食品饮料', 30, '/images/maotai.jpg', 1, NOW(), NOW()),
('五常大米 10kg', '东北优质大米,香甜可口', 168.00, '食品饮料', 200, '/images/rice.jpg', 1, NOW(), NOW()),
-- 美妆类
('SK-II神仙水 230ml', '护肤精华,改善肌肤', 1690.00, 80, '/images/skii.jpg', 1, NOW(), NOW());
('SK-II神仙水 230ml', '护肤精华,改善肌肤', 1690.00, '美妆个护', 80, '/images/skii.jpg', 1, NOW(), NOW());
-- ================================
-- 3. 插入秒杀活动数据

View File

@@ -11,12 +11,12 @@ WHERE username IN ('demo1', 'demo2', 'admin');
-- 插入使用BCrypt加密的演示用户
-- demo1/demo2 密码: 123456 (BCrypt哈希)
-- admin 密码: admin123 (BCrypt哈希)
INSERT INTO users (username, password, email, phone, status, created_at, updated_at)
VALUES ('demo1', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2uheWG/igi.', 'demo1@example.com', '13800138001', 1,
INSERT INTO users (username, password, email, phone, role, status, created_at, updated_at)
VALUES ('demo1', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2uheWG/igi.', 'demo1@example.com', '13800138001', 'USER', 1,
NOW(), NOW()),
('demo2', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2uheWG/igi.', 'demo2@example.com', '13800138002', 1,
('demo2', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2uheWG/igi.', 'demo2@example.com', '13800138002', 'USER', 1,
NOW(), NOW()),
('admin', '$2a$10$DOwVJZHH.5PkZKJKJKJKJOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'admin@example.com', '13800138000', 1,
('admin', '$2a$10$DOwVJZHH.5PkZKJKJKJKJOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'admin@example.com', '13800138000', 'ADMIN', 1,
NOW(), NOW());
-- 验证插入结果