后台完成修复,初始化项目

This commit is contained in:
2025-07-01 17:18:04 +08:00
commit 5916f076b7
74 changed files with 17444 additions and 0 deletions

View File

@@ -0,0 +1,155 @@
-- 秒杀系统数据库表结构
-- 创建数据库和所有必要的表
-- 创建数据库
CREATE DATABASE IF NOT EXISTS flash_sale_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE flash_sale_db;
-- ================================
-- 1. 用户表
-- ================================
CREATE TABLE IF NOT EXISTS users
(
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID',
username VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',
password VARCHAR(255) NOT NULL COMMENT '密码(加密)',
email VARCHAR(100) COMMENT '邮箱',
phone VARCHAR(20) COMMENT '手机号',
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 '更新时间',
INDEX idx_username (username),
INDEX idx_email (email),
INDEX idx_phone (phone),
INDEX idx_status (status),
INDEX idx_created_at (created_at)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT ='用户表';
-- ================================
-- 2. 商品表
-- ================================
CREATE TABLE IF NOT EXISTS products
(
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '商品ID',
name VARCHAR(200) NOT NULL COMMENT '商品名称',
description TEXT COMMENT '商品描述',
price DECIMAL(10, 2) NOT NULL COMMENT '商品价格',
stock INT NOT NULL DEFAULT 0 COMMENT '库存数量',
image_url VARCHAR(500) COMMENT '商品图片URL',
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 '更新时间',
INDEX idx_name (name),
INDEX idx_price (price),
INDEX idx_stock (stock),
INDEX idx_status (status),
INDEX idx_created_at (created_at)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT ='商品表';
-- ================================
-- 3. 秒杀活动表
-- ================================
CREATE TABLE IF NOT EXISTS flash_sales
(
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '秒杀活动ID',
product_id BIGINT NOT NULL COMMENT '商品ID',
flash_price DECIMAL(10, 2) NOT NULL COMMENT '秒杀价格',
flash_stock INT NOT NULL COMMENT '秒杀库存',
start_time TIMESTAMP NOT NULL COMMENT '开始时间',
end_time TIMESTAMP NOT NULL COMMENT '结束时间',
status TINYINT DEFAULT 1 COMMENT '状态1-未开始2-进行中3-已结束',
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,
INDEX idx_product_id (product_id),
INDEX idx_start_time (start_time),
INDEX idx_end_time (end_time),
INDEX idx_status (status),
INDEX idx_created_at (created_at)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT ='秒杀活动表';
-- ================================
-- 4. 订单表
-- ================================
CREATE TABLE IF NOT EXISTS orders
(
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '订单ID',
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 '更新时间',
FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE,
FOREIGN KEY (product_id) REFERENCES products (id) ON DELETE CASCADE,
INDEX idx_user_id (user_id),
INDEX idx_product_id (product_id),
INDEX idx_status (status),
INDEX idx_order_type (order_type),
INDEX idx_created_at (created_at),
INDEX idx_user_product (user_id, product_id)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT ='订单表';
-- ================================
-- 5. 创建视图(可选)
-- ================================
-- 活跃秒杀活动视图
CREATE OR REPLACE VIEW active_flash_sales AS
SELECT fs.id,
fs.product_id,
p.name as product_name,
p.price as original_price,
fs.flash_price,
fs.flash_stock,
fs.start_time,
fs.end_time,
fs.status,
p.image_url
FROM flash_sales fs
JOIN products p ON fs.product_id = p.id
WHERE fs.status = 2
AND fs.start_time <= NOW()
AND fs.end_time > NOW()
AND p.status = 1;
-- 订单统计视图
CREATE OR REPLACE VIEW order_statistics AS
SELECT DATE(created_at) as order_date,
COUNT(*) as total_orders,
SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END) as pending_orders,
SUM(CASE WHEN status = 2 THEN 1 ELSE 0 END) as paid_orders,
SUM(CASE WHEN status = 4 THEN 1 ELSE 0 END) as completed_orders,
SUM(CASE WHEN order_type = 2 THEN 1 ELSE 0 END) as flash_sale_orders,
SUM(total_price) as total_amount
FROM orders
GROUP BY DATE(created_at)
ORDER BY order_date DESC;
-- ================================
-- 6. 显示表结构
-- ================================
SHOW TABLES;
-- 显示表结构信息
SELECT TABLE_NAME as '表名',
TABLE_COMMENT as '表注释',
TABLE_ROWS as '估计行数'
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'flash_sale_db'
AND TABLE_TYPE = 'BASE TABLE'
ORDER BY TABLE_NAME;