feat: 删除JSP视图层,完善评价和通知系统,新增拼团模块
- 删除所有 JSP 页面(20个文件),前端完全迁移至 Vue 3 SPA - 完善评价系统:ReviewDialog 组件、用户评价历史页、评价状态检查API - 新增通知系统:Notification 实体/仓库/服务/控制器,NotificationCenter 接入真实API - 新增拼团模块:GroupBuying 全套后端和前端页面 - 修复 review check API 参数双重包装导致请求格式错误 - 修复通知 API 路径缺少 /api 前缀和响应格式处理 - MessageListenerService 集成 NotificationService 创建持久化通知 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,31 +1,32 @@
|
||||
-- 秒杀系统数据库表结构
|
||||
-- 创建数据库和所有必要的表
|
||||
-- 秒杀系统数据库结构
|
||||
-- 说明:本脚本只负责数据库对象定义,不包含演示数据。
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS flash_sale_db
|
||||
CHARACTER SET utf8mb4
|
||||
COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- 创建数据库
|
||||
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
|
||||
(
|
||||
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 '手机号',
|
||||
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 '更新时间',
|
||||
|
||||
INDEX idx_username (username),
|
||||
INDEX idx_email (email),
|
||||
INDEX idx_phone (phone),
|
||||
INDEX idx_status (status),
|
||||
INDEX idx_created_at (created_at)
|
||||
role VARCHAR(20) NOT NULL DEFAULT 'USER' COMMENT '角色:ADMIN/USER',
|
||||
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1-正常,0-禁用',
|
||||
last_login TIMESTAMP NULL COMMENT '最后登录时间',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
INDEX idx_users_username (username),
|
||||
INDEX idx_users_email (email),
|
||||
INDEX idx_users_phone (phone),
|
||||
INDEX idx_users_status (status),
|
||||
INDEX idx_users_created_at (created_at)
|
||||
) ENGINE = InnoDB
|
||||
DEFAULT CHARSET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci COMMENT ='用户表';
|
||||
@@ -33,8 +34,7 @@ CREATE TABLE IF NOT EXISTS users
|
||||
-- ================================
|
||||
-- 2. 商品表
|
||||
-- ================================
|
||||
CREATE TABLE IF NOT EXISTS products
|
||||
(
|
||||
CREATE TABLE IF NOT EXISTS products (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '商品ID',
|
||||
name VARCHAR(200) NOT NULL COMMENT '商品名称',
|
||||
description TEXT COMMENT '商品描述',
|
||||
@@ -42,15 +42,15 @@ CREATE TABLE IF NOT EXISTS products
|
||||
category VARCHAR(100) 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)
|
||||
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1-上架,0-下架',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
INDEX idx_products_name (name),
|
||||
INDEX idx_products_category (category),
|
||||
INDEX idx_products_price (price),
|
||||
INDEX idx_products_stock (stock),
|
||||
INDEX idx_products_status (status),
|
||||
INDEX idx_products_created_at (created_at)
|
||||
) ENGINE = InnoDB
|
||||
DEFAULT CHARSET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci COMMENT ='商品表';
|
||||
@@ -58,42 +58,41 @@ CREATE TABLE IF NOT EXISTS products
|
||||
-- ================================
|
||||
-- 3. 秒杀活动表
|
||||
-- ================================
|
||||
CREATE TABLE IF NOT EXISTS flash_sales
|
||||
(
|
||||
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)
|
||||
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1-未开始,2-进行中,3-已结束',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
CONSTRAINT fk_flash_sales_product FOREIGN KEY (product_id) REFERENCES products (id) ON DELETE CASCADE,
|
||||
INDEX idx_flash_sales_product_id (product_id),
|
||||
INDEX idx_flash_sales_start_time (start_time),
|
||||
INDEX idx_flash_sales_end_time (end_time),
|
||||
INDEX idx_flash_sales_status (status),
|
||||
INDEX idx_flash_sales_created_at (created_at)
|
||||
) ENGINE = InnoDB
|
||||
DEFAULT CHARSET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci COMMENT ='秒杀活动表';
|
||||
|
||||
-- ================================
|
||||
-- 4. 订单表
|
||||
-- 4. 订单主表
|
||||
-- ================================
|
||||
CREATE TABLE IF NOT EXISTS orders
|
||||
(
|
||||
CREATE TABLE IF NOT EXISTS orders (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '订单ID',
|
||||
order_no VARCHAR(64) NOT NULL UNIQUE COMMENT '订单号',
|
||||
group_no VARCHAR(64) 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-秒杀订单',
|
||||
product_id BIGINT NOT NULL COMMENT '兼容字段:主商品ID',
|
||||
flash_sale_id BIGINT COMMENT '秒杀活动ID',
|
||||
group_buying_group_id BIGINT COMMENT '拼团团组ID',
|
||||
quantity INT NOT NULL DEFAULT 1 COMMENT '兼容字段:总购买数量',
|
||||
total_price DECIMAL(10, 2) NOT NULL COMMENT '订单总价',
|
||||
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1-待支付,2-已支付,3-已发货,4-已完成,5-已取消',
|
||||
order_type TINYINT NOT NULL DEFAULT 1 COMMENT '订单类型:1-普通订单,2-秒杀订单',
|
||||
receiver_name VARCHAR(100) COMMENT '收货人',
|
||||
receiver_phone VARCHAR(20) COMMENT '收货手机号',
|
||||
receiver_address VARCHAR(255) COMMENT '收货地址',
|
||||
@@ -102,30 +101,26 @@ CREATE TABLE IF NOT EXISTS orders
|
||||
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,
|
||||
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)
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
CONSTRAINT fk_orders_user FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE,
|
||||
CONSTRAINT fk_orders_product FOREIGN KEY (product_id) REFERENCES products (id) ON DELETE CASCADE,
|
||||
INDEX idx_orders_order_no (order_no),
|
||||
INDEX idx_orders_group_no (group_no),
|
||||
INDEX idx_orders_user_id (user_id),
|
||||
INDEX idx_orders_product_id (product_id),
|
||||
INDEX idx_orders_flash_sale_id (flash_sale_id),
|
||||
INDEX idx_orders_status (status),
|
||||
INDEX idx_orders_order_type (order_type),
|
||||
INDEX idx_orders_created_at (created_at)
|
||||
) ENGINE = InnoDB
|
||||
DEFAULT CHARSET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci COMMENT ='订单表';
|
||||
|
||||
|
||||
|
||||
|
||||
COLLATE = utf8mb4_unicode_ci COMMENT ='订单主表';
|
||||
|
||||
-- ================================
|
||||
-- 5. 订单明细表
|
||||
-- ================================
|
||||
CREATE TABLE IF NOT EXISTS order_items
|
||||
(
|
||||
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',
|
||||
@@ -134,10 +129,9 @@ CREATE TABLE IF NOT EXISTS order_items
|
||||
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,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
CONSTRAINT fk_order_items_order FOREIGN KEY (order_id) REFERENCES orders (id) ON DELETE CASCADE,
|
||||
CONSTRAINT fk_order_items_product 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
|
||||
@@ -147,8 +141,7 @@ CREATE TABLE IF NOT EXISTS order_items
|
||||
-- ================================
|
||||
-- 6. 用户地址表
|
||||
-- ================================
|
||||
CREATE TABLE IF NOT EXISTS user_addresses
|
||||
(
|
||||
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 '收货人',
|
||||
@@ -157,13 +150,12 @@ CREATE TABLE IF NOT EXISTS user_addresses
|
||||
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)
|
||||
is_default TINYINT NOT NULL DEFAULT 0 COMMENT '是否默认地址',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
CONSTRAINT fk_user_addresses_user FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE,
|
||||
INDEX idx_user_addresses_user_id (user_id),
|
||||
INDEX idx_user_addresses_default (is_default)
|
||||
) ENGINE = InnoDB
|
||||
DEFAULT CHARSET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci COMMENT ='用户地址表';
|
||||
@@ -171,61 +163,127 @@ CREATE TABLE IF NOT EXISTS user_addresses
|
||||
-- ================================
|
||||
-- 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-隐藏',
|
||||
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)
|
||||
replied_at TIMESTAMP NULL COMMENT '回复时间',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
CONSTRAINT fk_product_reviews_product FOREIGN KEY (product_id) REFERENCES products (id) ON DELETE CASCADE,
|
||||
CONSTRAINT fk_product_reviews_user FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE,
|
||||
CONSTRAINT fk_product_reviews_order FOREIGN KEY (order_id) REFERENCES orders (id) ON DELETE CASCADE,
|
||||
UNIQUE KEY uk_review_order_user_product (order_id, user_id, product_id),
|
||||
INDEX idx_product_reviews_product_id (product_id),
|
||||
INDEX idx_product_reviews_user_id (user_id),
|
||||
INDEX idx_product_reviews_status (status)
|
||||
) ENGINE = InnoDB
|
||||
DEFAULT CHARSET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci COMMENT ='商品评价表';
|
||||
|
||||
|
||||
|
||||
-- ================================
|
||||
-- 8. 用户收藏表
|
||||
-- ================================
|
||||
CREATE TABLE IF NOT EXISTS user_favorites
|
||||
(
|
||||
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,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
CONSTRAINT fk_user_favorites_user FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE,
|
||||
CONSTRAINT fk_user_favorites_product 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)
|
||||
INDEX idx_user_favorites_user_id (user_id),
|
||||
INDEX idx_user_favorites_product_id (product_id)
|
||||
) ENGINE = InnoDB
|
||||
DEFAULT CHARSET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci COMMENT ='用户收藏表';
|
||||
|
||||
-- ================================
|
||||
-- 9. 创建视图(可选)
|
||||
-- 9. 视图
|
||||
-- ================================
|
||||
-- ================================
|
||||
-- 9. 拼团活动表
|
||||
-- ================================
|
||||
CREATE TABLE IF NOT EXISTS group_buying (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '拼团活动ID',
|
||||
product_id BIGINT NOT NULL COMMENT '商品ID',
|
||||
group_price DECIMAL(10, 2) NOT NULL COMMENT '拼团价格',
|
||||
required_members INT NOT NULL DEFAULT 2 COMMENT '成团人数',
|
||||
duration_minutes INT NOT NULL DEFAULT 1440 COMMENT '拼团有效期(分钟)',
|
||||
total_stock INT NOT NULL COMMENT '总库存',
|
||||
remaining_stock INT NOT NULL COMMENT '剩余库存',
|
||||
max_per_user INT NOT NULL DEFAULT 1 COMMENT '每人限购',
|
||||
status TINYINT NOT NULL DEFAULT 0 COMMENT '状态:0-草稿 1-未开始 2-进行中 3-已结束',
|
||||
start_time DATETIME NOT NULL COMMENT '开始时间',
|
||||
end_time DATETIME NOT NULL COMMENT '结束时间',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
CONSTRAINT fk_group_buying_product FOREIGN KEY (product_id) REFERENCES products (id) ON DELETE CASCADE,
|
||||
INDEX idx_group_buying_product_id (product_id),
|
||||
INDEX idx_group_buying_status (status),
|
||||
INDEX idx_group_buying_start_time (start_time),
|
||||
INDEX idx_group_buying_end_time (end_time)
|
||||
) ENGINE = InnoDB
|
||||
DEFAULT CHARSET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci COMMENT ='拼团活动表';
|
||||
|
||||
-- 活跃秒杀活动视图
|
||||
-- ================================
|
||||
-- 10. 拼团团组表
|
||||
-- ================================
|
||||
CREATE TABLE IF NOT EXISTS group_buying_group (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '团组ID',
|
||||
group_no VARCHAR(64) NOT NULL UNIQUE COMMENT '团号',
|
||||
group_buying_id BIGINT NOT NULL COMMENT '关联拼团活动',
|
||||
leader_user_id BIGINT NOT NULL COMMENT '团长用户ID',
|
||||
required_members INT NOT NULL COMMENT '需要人数',
|
||||
current_members INT NOT NULL DEFAULT 1 COMMENT '当前人数',
|
||||
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1-拼团中 2-已成团 3-已失败(超时)',
|
||||
expire_time DATETIME NOT NULL COMMENT '过期时间',
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
completed_at TIMESTAMP NULL COMMENT '成团时间',
|
||||
CONSTRAINT fk_gbg_group_buying FOREIGN KEY (group_buying_id) REFERENCES group_buying (id) ON DELETE CASCADE,
|
||||
CONSTRAINT fk_gbg_leader FOREIGN KEY (leader_user_id) REFERENCES users (id) ON DELETE CASCADE,
|
||||
INDEX idx_gbg_group_no (group_no),
|
||||
INDEX idx_gbg_group_buying_id (group_buying_id),
|
||||
INDEX idx_gbg_status (status),
|
||||
INDEX idx_gbg_expire_time (expire_time)
|
||||
) ENGINE = InnoDB
|
||||
DEFAULT CHARSET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci COMMENT ='拼团团组表';
|
||||
|
||||
-- ================================
|
||||
-- 11. 拼团成员表
|
||||
-- ================================
|
||||
CREATE TABLE IF NOT EXISTS group_buying_member (
|
||||
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '成员ID',
|
||||
group_id BIGINT NOT NULL COMMENT '关联团组',
|
||||
user_id BIGINT NOT NULL COMMENT '用户ID',
|
||||
order_id BIGINT COMMENT '关联订单',
|
||||
status TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1-已加入 2-已成团 3-已退出',
|
||||
joined_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '加入时间',
|
||||
CONSTRAINT fk_gbm_group FOREIGN KEY (group_id) REFERENCES group_buying_group (id) ON DELETE CASCADE,
|
||||
CONSTRAINT fk_gbm_user FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE,
|
||||
UNIQUE KEY uk_group_user (group_id, user_id),
|
||||
INDEX idx_gbm_group_id (group_id),
|
||||
INDEX idx_gbm_user_id (user_id),
|
||||
INDEX idx_gbm_order_id (order_id)
|
||||
) ENGINE = InnoDB
|
||||
DEFAULT CHARSET = utf8mb4
|
||||
COLLATE = utf8mb4_unicode_ci COMMENT ='拼团成员表';
|
||||
|
||||
-- ================================
|
||||
-- 12. 视图
|
||||
-- ================================
|
||||
CREATE OR REPLACE VIEW active_flash_sales AS
|
||||
SELECT fs.id,
|
||||
fs.product_id,
|
||||
p.name as product_name,
|
||||
p.price as original_price,
|
||||
p.name AS product_name,
|
||||
p.price AS original_price,
|
||||
fs.flash_price,
|
||||
fs.flash_stock,
|
||||
fs.start_time,
|
||||
@@ -233,35 +291,20 @@ SELECT fs.id,
|
||||
fs.status,
|
||||
p.image_url
|
||||
FROM flash_sales fs
|
||||
JOIN products p ON fs.product_id = p.id
|
||||
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
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user