删除无用信息

This commit is contained in:
2026-05-02 17:17:47 +08:00
parent 665603704b
commit bcd30ae5de
6 changed files with 864 additions and 989 deletions

864
sql/flash_sale_db.sql Normal file
View File

@@ -0,0 +1,864 @@
/*
Navicat Premium Dump SQL
Source Server : localhost_3306
Source Server Type : MySQL
Source Server Version : 80036 (8.0.36)
Source Host : localhost:3306
Source Schema : flash_sale_db
Target Server Type : MySQL
Target Server Version : 80036 (8.0.36)
File Encoding : 65001
Date: 25/03/2026 23:57:40
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for flash_sales
-- ----------------------------
DROP TABLE IF EXISTS `flash_sales`;
CREATE TABLE `flash_sales`
(
`id` bigint NOT NULL AUTO_INCREMENT 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 NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_product_id` (`product_id`),
KEY `idx_start_time` (`start_time`),
KEY `idx_end_time` (`end_time`),
KEY `idx_status` (`status`),
KEY `idx_created_at` (`created_at`),
CONSTRAINT `flash_sales_ibfk_1` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE
) ENGINE = InnoDB
AUTO_INCREMENT = 13
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT ='秒杀活动表';
-- ----------------------------
-- Records of flash_sales
-- ----------------------------
BEGIN;
INSERT INTO `flash_sales` (`id`, `product_id`, `flash_price`, `flash_stock`, `start_time`, `end_time`, `status`,
`created_at`, `updated_at`)
VALUES (10, 4, 0.01, 10, '2026-03-14 15:55:00', '2026-08-02 15:55:00', 2, '2026-03-14 15:50:34', '2026-03-14 09:55:25');
INSERT INTO `flash_sales` (`id`, `product_id`, `flash_price`, `flash_stock`, `start_time`, `end_time`, `status`,
`created_at`, `updated_at`)
VALUES (11, 1, 0.01, 9, '2026-03-14 17:12:00', '2027-03-19 17:12:00', 2, '2026-03-14 17:07:14', '2026-03-14 09:47:30');
INSERT INTO `flash_sales` (`id`, `product_id`, `flash_price`, `flash_stock`, `start_time`, `end_time`, `status`,
`created_at`, `updated_at`)
VALUES (12, 2, 0.01, 1, '2026-03-14 20:48:00', '2027-03-13 20:48:00', 1, '2026-03-14 20:43:59', '2026-03-14 12:43:59');
COMMIT;
-- ----------------------------
-- Table structure for group_buying
-- ----------------------------
DROP TABLE IF EXISTS `group_buying`;
CREATE TABLE `group_buying`
(
`id` bigint NOT NULL AUTO_INCREMENT,
`created_at` datetime(6) NOT NULL,
`duration_minutes` int NOT NULL,
`end_time` datetime(6) NOT NULL,
`group_price` decimal(10, 2) NOT NULL,
`max_per_user` int NOT NULL,
`product_id` bigint NOT NULL,
`remaining_stock` int NOT NULL,
`required_members` int NOT NULL,
`start_time` datetime(6) NOT NULL,
`status` int NOT NULL,
`total_stock` int NOT NULL,
`updated_at` datetime(6) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK59r61d7iyp2vxxkoyjudk343o` (`product_id`),
CONSTRAINT `FK59r61d7iyp2vxxkoyjudk343o` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 4
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Records of group_buying
-- ----------------------------
BEGIN;
INSERT INTO `group_buying` (`id`, `created_at`, `duration_minutes`, `end_time`, `group_price`, `max_per_user`,
`product_id`, `remaining_stock`, `required_members`, `start_time`, `status`, `total_stock`,
`updated_at`)
VALUES (1, '2026-03-13 23:32:29.162000', 1440, '2026-07-05 00:00:00.000000', 0.01, 1, 1, 98, 2,
'2026-03-13 23:32:21.000000', 2, 100, '2026-03-13 23:32:32.081000');
INSERT INTO `group_buying` (`id`, `created_at`, `duration_minutes`, `end_time`, `group_price`, `max_per_user`,
`product_id`, `remaining_stock`, `required_members`, `start_time`, `status`, `total_stock`,
`updated_at`)
VALUES (2, '2026-03-14 15:49:21.162000', 1440, '2026-03-29 15:54:00.000000', 0.01, 1, 5, 95, 2,
'2026-03-14 15:54:00.000000', 2, 100, '2026-03-14 15:49:25.451000');
INSERT INTO `group_buying` (`id`, `created_at`, `duration_minutes`, `end_time`, `group_price`, `max_per_user`,
`product_id`, `remaining_stock`, `required_members`, `start_time`, `status`, `total_stock`,
`updated_at`)
VALUES (3, '2026-03-16 23:57:24.818000', 1440, '2026-03-18 00:02:00.000000', 0.01, 3, 11, 96, 2,
'2026-03-16 00:02:00.000000', 2, 100, '2026-03-17 00:17:44.859000');
COMMIT;
-- ----------------------------
-- Table structure for group_buying_group
-- ----------------------------
DROP TABLE IF EXISTS `group_buying_group`;
CREATE TABLE `group_buying_group`
(
`id` bigint NOT NULL AUTO_INCREMENT,
`completed_at` datetime(6) DEFAULT NULL,
`created_at` datetime(6) NOT NULL,
`current_members` int NOT NULL,
`expire_time` datetime(6) NOT NULL,
`group_buying_id` bigint NOT NULL,
`group_no` varchar(64) NOT NULL,
`leader_user_id` bigint NOT NULL,
`required_members` int NOT NULL,
`status` int NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `UK_9khnmu1trewcuahx5k2m0am51` (`group_no`),
KEY `FKqa4p2gmyfgv73i1278fncxyjd` (`group_buying_id`),
KEY `FKmc231ojxg44fsobry8h71p7ts` (`leader_user_id`),
CONSTRAINT `FKmc231ojxg44fsobry8h71p7ts` FOREIGN KEY (`leader_user_id`) REFERENCES `users` (`id`),
CONSTRAINT `FKqa4p2gmyfgv73i1278fncxyjd` FOREIGN KEY (`group_buying_id`) REFERENCES `group_buying` (`id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 8
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Records of group_buying_group
-- ----------------------------
BEGIN;
INSERT INTO `group_buying_group` (`id`, `completed_at`, `created_at`, `current_members`, `expire_time`,
`group_buying_id`, `group_no`, `leader_user_id`, `required_members`, `status`)
VALUES (1, '2026-03-16 21:06:50.390000', '2026-03-14 15:49:34.380000', 1, '2026-03-15 15:49:34.379000', 1,
'GB1773474574379662', 3, 2, 3);
INSERT INTO `group_buying_group` (`id`, `completed_at`, `created_at`, `current_members`, `expire_time`,
`group_buying_id`, `group_no`, `leader_user_id`, `required_members`, `status`)
VALUES (2, '2026-03-16 16:01:20.000000', '2026-03-16 21:09:52.417000', 2, '2026-03-17 21:09:52.413000', 1,
'GB1773666592413340', 3, 2, 2);
INSERT INTO `group_buying_group` (`id`, `completed_at`, `created_at`, `current_members`, `expire_time`,
`group_buying_id`, `group_no`, `leader_user_id`, `required_members`, `status`)
VALUES (3, '2026-03-16 16:01:20.000000', '2026-03-16 23:36:48.080000', 2, '2026-03-17 23:36:48.076000', 2,
'GB1773675408076559', 3, 2, 2);
INSERT INTO `group_buying_group` (`id`, `completed_at`, `created_at`, `current_members`, `expire_time`,
`group_buying_id`, `group_no`, `leader_user_id`, `required_members`, `status`)
VALUES (4, '2026-03-16 16:01:20.000000', '2026-03-16 23:44:34.651000', 2, '2026-03-17 23:44:34.647000', 2,
'GB1773675874647308', 3, 2, 2);
INSERT INTO `group_buying_group` (`id`, `completed_at`, `created_at`, `current_members`, `expire_time`,
`group_buying_id`, `group_no`, `leader_user_id`, `required_members`, `status`)
VALUES (5, NULL, '2026-03-16 23:47:02.225000', 1, '2026-03-17 23:47:02.224000', 2, 'GB1773676022224046', 15, 2, 1);
INSERT INTO `group_buying_group` (`id`, `completed_at`, `created_at`, `current_members`, `expire_time`,
`group_buying_id`, `group_no`, `leader_user_id`, `required_members`, `status`)
VALUES (6, NULL, '2026-03-17 00:06:39.985000', 2, '2026-03-18 00:06:39.983000', 3, 'GB1773677199982359', 3, 2, 1);
INSERT INTO `group_buying_group` (`id`, `completed_at`, `created_at`, `current_members`, `expire_time`,
`group_buying_id`, `group_no`, `leader_user_id`, `required_members`, `status`)
VALUES (7, '2026-03-17 00:18:19.615000', '2026-03-17 00:17:54.946000', 2, '2026-03-18 00:17:54.941000', 3,
'GB1773677874941488', 3, 2, 2);
COMMIT;
-- ----------------------------
-- Table structure for group_buying_member
-- ----------------------------
DROP TABLE IF EXISTS `group_buying_member`;
CREATE TABLE `group_buying_member`
(
`id` bigint NOT NULL AUTO_INCREMENT,
`group_id` bigint NOT NULL,
`joined_at` datetime(6) NOT NULL,
`order_id` bigint DEFAULT NULL,
`status` int NOT NULL,
`user_id` bigint NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_group_user` (`group_id`, `user_id`),
KEY `FK2k1d07r2qich4sqquxisdkf7e` (`user_id`),
CONSTRAINT `FK2k1d07r2qich4sqquxisdkf7e` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
CONSTRAINT `FKplwuuxax228wqw6nr6pnmmllq` FOREIGN KEY (`group_id`) REFERENCES `group_buying_group` (`id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 13
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Records of group_buying_member
-- ----------------------------
BEGIN;
INSERT INTO `group_buying_member` (`id`, `group_id`, `joined_at`, `order_id`, `status`, `user_id`)
VALUES (1, 1, '2026-03-14 15:49:34.432000', 21, 3, 3);
INSERT INTO `group_buying_member` (`id`, `group_id`, `joined_at`, `order_id`, `status`, `user_id`)
VALUES (2, 2, '2026-03-16 21:09:52.464000', 23, 2, 3);
INSERT INTO `group_buying_member` (`id`, `group_id`, `joined_at`, `order_id`, `status`, `user_id`)
VALUES (3, 2, '2026-03-16 23:09:11.629000', 25, 2, 15);
INSERT INTO `group_buying_member` (`id`, `group_id`, `joined_at`, `order_id`, `status`, `user_id`)
VALUES (4, 3, '2026-03-16 23:36:48.130000', 26, 2, 3);
INSERT INTO `group_buying_member` (`id`, `group_id`, `joined_at`, `order_id`, `status`, `user_id`)
VALUES (5, 3, '2026-03-16 23:37:04.179000', 27, 2, 15);
INSERT INTO `group_buying_member` (`id`, `group_id`, `joined_at`, `order_id`, `status`, `user_id`)
VALUES (6, 4, '2026-03-16 23:44:34.711000', 28, 2, 3);
INSERT INTO `group_buying_member` (`id`, `group_id`, `joined_at`, `order_id`, `status`, `user_id`)
VALUES (7, 4, '2026-03-16 23:45:05.179000', 29, 2, 15);
INSERT INTO `group_buying_member` (`id`, `group_id`, `joined_at`, `order_id`, `status`, `user_id`)
VALUES (8, 5, '2026-03-16 23:47:02.250000', 30, 1, 15);
INSERT INTO `group_buying_member` (`id`, `group_id`, `joined_at`, `order_id`, `status`, `user_id`)
VALUES (9, 6, '2026-03-17 00:06:40.074000', 31, 1, 3);
INSERT INTO `group_buying_member` (`id`, `group_id`, `joined_at`, `order_id`, `status`, `user_id`)
VALUES (10, 6, '2026-03-17 00:06:47.015000', 32, 1, 15);
INSERT INTO `group_buying_member` (`id`, `group_id`, `joined_at`, `order_id`, `status`, `user_id`)
VALUES (11, 7, '2026-03-17 00:17:55.040000', 33, 2, 3);
INSERT INTO `group_buying_member` (`id`, `group_id`, `joined_at`, `order_id`, `status`, `user_id`)
VALUES (12, 7, '2026-03-17 00:18:19.601000', 34, 2, 15);
COMMIT;
-- ----------------------------
-- Table structure for notifications
-- ----------------------------
DROP TABLE IF EXISTS `notifications`;
CREATE TABLE `notifications`
(
`id` bigint NOT NULL AUTO_INCREMENT,
`created_at` datetime(6) NOT NULL,
`link` varchar(255) DEFAULT NULL,
`message` text NOT NULL,
`is_read` bit(1) NOT NULL,
`title` varchar(255) NOT NULL,
`type` varchar(32) NOT NULL,
`user_id` bigint NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_notification_user_read` (`user_id`, `is_read`),
KEY `idx_notification_user_created` (`user_id`, `created_at`)
) ENGINE = InnoDB
AUTO_INCREMENT = 15
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Records of notifications
-- ----------------------------
BEGIN;
INSERT INTO `notifications` (`id`, `created_at`, `link`, `message`, `is_read`, `title`, `type`, `user_id`)
VALUES (4, '2026-03-16 23:07:03.974000', '/order/24', '您的订单 #24 已创建,请尽快完成支付', b'0', '订单创建成功',
'order', 3);
INSERT INTO `notifications` (`id`, `created_at`, `link`, `message`, `is_read`, `title`, `type`, `user_id`)
VALUES (5, '2026-03-16 23:07:12.309000', '/order/24', '您的订单 #24 已支付成功,等待商家发货', b'0', '订单支付成功',
'order', 3);
INSERT INTO `notifications` (`id`, `created_at`, `link`, `message`, `is_read`, `title`, `type`, `user_id`)
VALUES (6, '2026-03-16 23:09:32.499000', '/order/25', '您的订单 #25 已支付成功,等待商家发货', b'0', '订单支付成功',
'order', 15);
INSERT INTO `notifications` (`id`, `created_at`, `link`, `message`, `is_read`, `title`, `type`, `user_id`)
VALUES (7, '2026-03-16 23:10:35.244000', '/order/23', '您的订单 #23 退货申请已提交,请等待审核', b'0', '退货申请已提交',
'return', 3);
INSERT INTO `notifications` (`id`, `created_at`, `link`, `message`, `is_read`, `title`, `type`, `user_id`)
VALUES (8, '2026-03-16 23:11:26.084000', '/order/23', '您的订单 #23 退货申请已通过,请尽快寄回商品', b'0',
'退货申请已通过', 'return', 3);
INSERT INTO `notifications` (`id`, `created_at`, `link`, `message`, `is_read`, `title`, `type`, `user_id`)
VALUES (9, '2026-03-16 23:37:56.413000', '/order/26', '您的订单 #26 已支付成功,等待商家发货', b'0', '订单支付成功',
'order', 3);
INSERT INTO `notifications` (`id`, `created_at`, `link`, `message`, `is_read`, `title`, `type`, `user_id`)
VALUES (10, '2026-03-16 23:38:20.405000', '/order/27', '您的订单 #27 已支付成功,等待商家发货', b'0', '订单支付成功',
'order', 15);
INSERT INTO `notifications` (`id`, `created_at`, `link`, `message`, `is_read`, `title`, `type`, `user_id`)
VALUES (11, '2026-03-16 23:46:54.529000', '/order/29', '您的订单 #29 已支付成功,等待商家发货', b'0', '订单支付成功',
'order', 15);
INSERT INTO `notifications` (`id`, `created_at`, `link`, `message`, `is_read`, `title`, `type`, `user_id`)
VALUES (12, '2026-03-16 23:47:12.529000', '/order/30', '您的订单 #30 已支付成功,等待商家发货', b'0', '订单支付成功',
'order', 15);
INSERT INTO `notifications` (`id`, `created_at`, `link`, `message`, `is_read`, `title`, `type`, `user_id`)
VALUES (13, '2026-03-17 00:09:01.296000', '/order/32', '您的订单 #32 已支付成功,等待商家发货', b'0', '订单支付成功',
'order', 15);
INSERT INTO `notifications` (`id`, `created_at`, `link`, `message`, `is_read`, `title`, `type`, `user_id`)
VALUES (14, '2026-03-17 00:09:21.874000', '/order/31', '您的订单 #31 已支付成功,等待商家发货', b'0', '订单支付成功',
'order', 3);
COMMIT;
-- ----------------------------
-- Table structure for order_items
-- ----------------------------
DROP TABLE IF EXISTS `order_items`;
CREATE TABLE `order_items`
(
`id` bigint NOT NULL AUTO_INCREMENT,
`created_at` datetime(6) NOT NULL,
`order_id` bigint NOT NULL,
`price` decimal(10, 2) NOT NULL,
`product_id` bigint NOT NULL,
`product_image_url` varchar(500) DEFAULT NULL,
`product_name` varchar(200) NOT NULL,
`quantity` int NOT NULL,
`subtotal` decimal(10, 2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 14
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Records of order_items
-- ----------------------------
BEGIN;
INSERT INTO `order_items` (`id`, `created_at`, `order_id`, `price`, `product_id`, `product_image_url`, `product_name`,
`quantity`, `subtotal`)
VALUES (1, '2026-03-16 23:07:03.951000', 24, 168.00, 14,
'/uploads/products/2026/03/14/2e380b9213824856b7d00e0d2b54b436.png', '五常大米 10kg', 2, 336.00);
INSERT INTO `order_items` (`id`, `created_at`, `order_id`, `price`, `product_id`, `product_image_url`, `product_name`,
`quantity`, `subtotal`)
VALUES (2, '2026-03-16 23:36:48.126000', 26, 0.01, 5,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', 'Apple Watch Series 9', 1, 0.01);
INSERT INTO `order_items` (`id`, `created_at`, `order_id`, `price`, `product_id`, `product_image_url`, `product_name`,
`quantity`, `subtotal`)
VALUES (3, '2026-03-16 23:37:04.171000', 27, 0.01, 5,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', 'Apple Watch Series 9', 1, 0.01);
INSERT INTO `order_items` (`id`, `created_at`, `order_id`, `price`, `product_id`, `product_image_url`, `product_name`,
`quantity`, `subtotal`)
VALUES (4, '2026-03-16 23:44:34.708000', 28, 0.01, 5,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', 'Apple Watch Series 9', 1, 0.01);
INSERT INTO `order_items` (`id`, `created_at`, `order_id`, `price`, `product_id`, `product_image_url`, `product_name`,
`quantity`, `subtotal`)
VALUES (5, '2026-03-16 23:45:05.177000', 29, 0.01, 5,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', 'Apple Watch Series 9', 1, 0.01);
INSERT INTO `order_items` (`id`, `created_at`, `order_id`, `price`, `product_id`, `product_image_url`, `product_name`,
`quantity`, `subtotal`)
VALUES (6, '2026-03-16 23:47:02.241000', 30, 0.01, 5,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', 'Apple Watch Series 9', 1, 0.01);
INSERT INTO `order_items` (`id`, `created_at`, `order_id`, `price`, `product_id`, `product_image_url`, `product_name`,
`quantity`, `subtotal`)
VALUES (7, '2026-03-14 15:49:34.000000', 21, 0.01, 1,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', 'iPhone 15 Pro Max', 1, 0.01);
INSERT INTO `order_items` (`id`, `created_at`, `order_id`, `price`, `product_id`, `product_image_url`, `product_name`,
`quantity`, `subtotal`)
VALUES (8, '2026-03-16 21:09:52.000000', 23, 0.01, 1,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', 'iPhone 15 Pro Max', 1, 0.01);
INSERT INTO `order_items` (`id`, `created_at`, `order_id`, `price`, `product_id`, `product_image_url`, `product_name`,
`quantity`, `subtotal`)
VALUES (9, '2026-03-16 23:09:12.000000', 25, 0.01, 1,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', 'iPhone 15 Pro Max', 1, 0.01);
INSERT INTO `order_items` (`id`, `created_at`, `order_id`, `price`, `product_id`, `product_image_url`, `product_name`,
`quantity`, `subtotal`)
VALUES (10, '2026-03-17 00:06:40.069000', 31, 0.01, 11,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', '深入理解Java虚拟机', 1, 0.01);
INSERT INTO `order_items` (`id`, `created_at`, `order_id`, `price`, `product_id`, `product_image_url`, `product_name`,
`quantity`, `subtotal`)
VALUES (11, '2026-03-17 00:06:47.011000', 32, 0.01, 11,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', '深入理解Java虚拟机', 1, 0.01);
INSERT INTO `order_items` (`id`, `created_at`, `order_id`, `price`, `product_id`, `product_image_url`, `product_name`,
`quantity`, `subtotal`)
VALUES (12, '2026-03-17 00:17:55.030000', 33, 0.01, 11,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', '深入理解Java虚拟机', 1, 0.01);
INSERT INTO `order_items` (`id`, `created_at`, `order_id`, `price`, `product_id`, `product_image_url`, `product_name`,
`quantity`, `subtotal`)
VALUES (13, '2026-03-17 00:18:19.597000', 34, 0.01, 11,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', '深入理解Java虚拟机', 1, 0.01);
COMMIT;
-- ----------------------------
-- Table structure for order_returns
-- ----------------------------
DROP TABLE IF EXISTS `order_returns`;
CREATE TABLE `order_returns`
(
`id` bigint NOT NULL AUTO_INCREMENT,
`admin_remark` varchar(500) DEFAULT NULL,
`cancelled_at` datetime(6) DEFAULT NULL,
`completed_at` datetime(6) DEFAULT NULL,
`created_at` datetime(6) NOT NULL,
`description` text,
`images` varchar(2000) DEFAULT NULL,
`order_id` bigint NOT NULL,
`reason` varchar(500) NOT NULL,
`refund_amount` decimal(10, 2) NOT NULL,
`reject_reason` varchar(500) DEFAULT NULL,
`return_no` varchar(64) NOT NULL,
`return_tracking` varchar(100) DEFAULT NULL,
`reviewed_at` datetime(6) DEFAULT NULL,
`shipped_at` datetime(6) DEFAULT NULL,
`status` int NOT NULL,
`updated_at` datetime(6) DEFAULT NULL,
`user_id` bigint NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `UK_elu6c1jupuay4bgn9gffdsbcx` (`return_no`)
) ENGINE = InnoDB
AUTO_INCREMENT = 2
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Records of order_returns
-- ----------------------------
BEGIN;
INSERT INTO `order_returns` (`id`, `admin_remark`, `cancelled_at`, `completed_at`, `created_at`, `description`,
`images`, `order_id`, `reason`, `refund_amount`, `reject_reason`, `return_no`,
`return_tracking`, `reviewed_at`, `shipped_at`, `status`, `updated_at`, `user_id`)
VALUES (1, NULL, NULL, NULL, '2026-03-16 23:10:35.208000', '1', NULL, 23, '商品与描述不符', 0.01, NULL,
'RT1773673835208', NULL, '2026-03-16 23:11:26.080000', NULL, 2, '2026-03-16 23:11:26.096000', 3);
COMMIT;
-- ----------------------------
-- Table structure for orders
-- ----------------------------
DROP TABLE IF EXISTS `orders`;
CREATE TABLE `orders`
(
`id` bigint NOT NULL AUTO_INCREMENT 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 NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`completed_at` datetime(6) DEFAULT NULL,
`group_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`order_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
`paid_at` datetime(6) DEFAULT NULL,
`payment_method` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`receiver_address` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`receiver_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`receiver_phone` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`remark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`shipped_at` datetime(6) DEFAULT NULL,
`flash_sale_id` bigint DEFAULT NULL,
`group_buying_group_id` bigint DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_product_id` (`product_id`),
KEY `idx_status` (`status`),
KEY `idx_order_type` (`order_type`),
KEY `idx_created_at` (`created_at`),
KEY `idx_user_product` (`user_id`, `product_id`),
CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,
CONSTRAINT `orders_ibfk_2` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE
) ENGINE = InnoDB
AUTO_INCREMENT = 35
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT ='订单表';
-- ----------------------------
-- Records of orders
-- ----------------------------
BEGIN;
INSERT INTO `orders` (`id`, `user_id`, `product_id`, `quantity`, `total_price`, `status`, `order_type`, `created_at`,
`updated_at`, `completed_at`, `group_no`, `order_no`, `paid_at`, `payment_method`,
`receiver_address`, `receiver_name`, `receiver_phone`, `remark`, `shipped_at`, `flash_sale_id`,
`group_buying_group_id`)
VALUES (18, 3, 1, 1, 7999.00, 3, 2, '2025-07-04 22:02:40', '2026-03-14 16:24:42', NULL, NULL, '', NULL, NULL, NULL,
NULL, NULL, '商家发货', '2026-03-14 16:24:42.039000', NULL, NULL);
INSERT INTO `orders` (`id`, `user_id`, `product_id`, `quantity`, `total_price`, `status`, `order_type`, `created_at`,
`updated_at`, `completed_at`, `group_no`, `order_no`, `paid_at`, `payment_method`,
`receiver_address`, `receiver_name`, `receiver_phone`, `remark`, `shipped_at`, `flash_sale_id`,
`group_buying_group_id`)
VALUES (19, 3, 14, 1, 168.00, 4, 1, '2025-07-04 22:03:38', '2026-03-16 23:10:49', '2026-03-16 23:10:49.075000', NULL,
'', NULL, NULL, NULL, NULL, NULL, '用户确认收货', '2026-03-14 16:24:50.513000', NULL, NULL);
INSERT INTO `orders` (`id`, `user_id`, `product_id`, `quantity`, `total_price`, `status`, `order_type`, `created_at`,
`updated_at`, `completed_at`, `group_no`, `order_no`, `paid_at`, `payment_method`,
`receiver_address`, `receiver_name`, `receiver_phone`, `remark`, `shipped_at`, `flash_sale_id`,
`group_buying_group_id`)
VALUES (20, 3, 14, 2, 336.00, 4, 1, '2025-07-30 09:07:22', '2026-03-16 23:10:45', '2026-03-16 23:10:45.025000', NULL,
'', '2026-03-13 23:33:50.367000', 'ONLINE', NULL, NULL, NULL, '用户确认收货', '2026-03-14 16:24:48.353000',
NULL, NULL);
INSERT INTO `orders` (`id`, `user_id`, `product_id`, `quantity`, `total_price`, `status`, `order_type`, `created_at`,
`updated_at`, `completed_at`, `group_no`, `order_no`, `paid_at`, `payment_method`,
`receiver_address`, `receiver_name`, `receiver_phone`, `remark`, `shipped_at`, `flash_sale_id`,
`group_buying_group_id`)
VALUES (21, 3, 1, 1, 0.01, 4, 3, '2026-03-14 15:49:34', '2026-03-14 16:25:00', '2026-03-14 16:25:00.018000', NULL,
'GB1773474574422850', '2026-03-14 15:54:07.163000', 'ONLINE', NULL, NULL, NULL, '用户确认收货',
'2026-03-14 16:24:37.672000', NULL, 1);
INSERT INTO `orders` (`id`, `user_id`, `product_id`, `quantity`, `total_price`, `status`, `order_type`, `created_at`,
`updated_at`, `completed_at`, `group_no`, `order_no`, `paid_at`, `payment_method`,
`receiver_address`, `receiver_name`, `receiver_phone`, `remark`, `shipped_at`, `flash_sale_id`,
`group_buying_group_id`)
VALUES (22, 3, 1, 1, 0.01, 4, 2, '2026-03-14 17:47:30', '2026-03-16 23:10:40', '2026-03-16 23:10:39.916000', NULL,
'FS1773481650367298', '2026-03-14 17:47:37.837000', 'ONLINE', NULL, NULL, NULL, '用户确认收货',
'2026-03-16 23:07:25.085000', 11, NULL);
INSERT INTO `orders` (`id`, `user_id`, `product_id`, `quantity`, `total_price`, `status`, `order_type`, `created_at`,
`updated_at`, `completed_at`, `group_no`, `order_no`, `paid_at`, `payment_method`,
`receiver_address`, `receiver_name`, `receiver_phone`, `remark`, `shipped_at`, `flash_sale_id`,
`group_buying_group_id`)
VALUES (23, 3, 1, 1, 0.01, 6, 3, '2026-03-16 21:09:52', '2026-03-16 23:10:35', '2026-03-16 23:06:38.357000', NULL,
'GB1773666592456790', '2026-03-16 21:12:56.248000', 'ONLINE', NULL, NULL, NULL, '用户申请退货',
'2026-03-16 21:26:18.999000', NULL, 2);
INSERT INTO `orders` (`id`, `user_id`, `product_id`, `quantity`, `total_price`, `status`, `order_type`, `created_at`,
`updated_at`, `completed_at`, `group_no`, `order_no`, `paid_at`, `payment_method`,
`receiver_address`, `receiver_name`, `receiver_phone`, `remark`, `shipped_at`, `flash_sale_id`,
`group_buying_group_id`)
VALUES (24, 3, 14, 2, 336.00, 4, 1, '2026-03-16 23:07:04', '2026-03-16 23:10:17', '2026-03-16 23:10:17.251000', NULL,
'FS1773673623934239', '2026-03-16 23:07:12.285000', 'ONLINE', NULL, NULL, NULL, '用户确认收货',
'2026-03-16 23:07:22.791000', NULL, NULL);
INSERT INTO `orders` (`id`, `user_id`, `product_id`, `quantity`, `total_price`, `status`, `order_type`, `created_at`,
`updated_at`, `completed_at`, `group_no`, `order_no`, `paid_at`, `payment_method`,
`receiver_address`, `receiver_name`, `receiver_phone`, `remark`, `shipped_at`, `flash_sale_id`,
`group_buying_group_id`)
VALUES (25, 15, 1, 1, 0.01, 4, 3, '2026-03-16 23:09:12', '2026-03-16 23:14:48', '2026-03-16 23:14:48.467000', NULL,
'GB1773673751625355', '2026-03-16 23:09:32.485000', 'ONLINE', NULL, NULL, NULL, '用户确认收货',
'2026-03-16 23:11:18.685000', NULL, 2);
INSERT INTO `orders` (`id`, `user_id`, `product_id`, `quantity`, `total_price`, `status`, `order_type`, `created_at`,
`updated_at`, `completed_at`, `group_no`, `order_no`, `paid_at`, `payment_method`,
`receiver_address`, `receiver_name`, `receiver_phone`, `remark`, `shipped_at`, `flash_sale_id`,
`group_buying_group_id`)
VALUES (26, 3, 5, 1, 0.01, 2, 3, '2026-03-16 23:36:48', '2026-03-16 23:37:56', NULL, NULL, 'GB1773675408118011',
'2026-03-16 23:37:56.394000', 'ONLINE', NULL, NULL, NULL, '模拟支付成功 - ONLINE', NULL, NULL, 3);
INSERT INTO `orders` (`id`, `user_id`, `product_id`, `quantity`, `total_price`, `status`, `order_type`, `created_at`,
`updated_at`, `completed_at`, `group_no`, `order_no`, `paid_at`, `payment_method`,
`receiver_address`, `receiver_name`, `receiver_phone`, `remark`, `shipped_at`, `flash_sale_id`,
`group_buying_group_id`)
VALUES (27, 15, 5, 1, 0.01, 2, 3, '2026-03-16 23:37:04', '2026-03-16 23:38:20', NULL, NULL, 'GB1773675424159373',
'2026-03-16 23:38:20.390000', 'ONLINE', NULL, NULL, NULL, '模拟支付成功 - ONLINE', NULL, NULL, 3);
INSERT INTO `orders` (`id`, `user_id`, `product_id`, `quantity`, `total_price`, `status`, `order_type`, `created_at`,
`updated_at`, `completed_at`, `group_no`, `order_no`, `paid_at`, `payment_method`,
`receiver_address`, `receiver_name`, `receiver_phone`, `remark`, `shipped_at`, `flash_sale_id`,
`group_buying_group_id`)
VALUES (28, 3, 5, 1, 0.01, 1, 3, '2026-03-16 23:44:35', '2026-03-16 23:44:35', NULL, NULL, 'GB1773675874699140', NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, 4);
INSERT INTO `orders` (`id`, `user_id`, `product_id`, `quantity`, `total_price`, `status`, `order_type`, `created_at`,
`updated_at`, `completed_at`, `group_no`, `order_no`, `paid_at`, `payment_method`,
`receiver_address`, `receiver_name`, `receiver_phone`, `remark`, `shipped_at`, `flash_sale_id`,
`group_buying_group_id`)
VALUES (29, 15, 5, 1, 0.01, 2, 3, '2026-03-16 23:45:05', '2026-03-16 23:46:55', NULL, NULL, 'GB1773675905174079',
'2026-03-16 23:46:54.506000', 'ONLINE', NULL, NULL, NULL, '模拟支付成功 - ONLINE', NULL, NULL, 4);
INSERT INTO `orders` (`id`, `user_id`, `product_id`, `quantity`, `total_price`, `status`, `order_type`, `created_at`,
`updated_at`, `completed_at`, `group_no`, `order_no`, `paid_at`, `payment_method`,
`receiver_address`, `receiver_name`, `receiver_phone`, `remark`, `shipped_at`, `flash_sale_id`,
`group_buying_group_id`)
VALUES (30, 15, 5, 1, 0.01, 2, 3, '2026-03-16 23:47:02', '2026-03-16 23:47:13', NULL, NULL, 'GB1773676022236796',
'2026-03-16 23:47:12.518000', 'ONLINE', NULL, NULL, NULL, '模拟支付成功 - ONLINE', NULL, NULL, 5);
INSERT INTO `orders` (`id`, `user_id`, `product_id`, `quantity`, `total_price`, `status`, `order_type`, `created_at`,
`updated_at`, `completed_at`, `group_no`, `order_no`, `paid_at`, `payment_method`,
`receiver_address`, `receiver_name`, `receiver_phone`, `remark`, `shipped_at`, `flash_sale_id`,
`group_buying_group_id`)
VALUES (31, 3, 11, 1, 0.01, 2, 3, '2026-03-17 00:06:40', '2026-03-17 00:09:22', NULL, NULL, 'GB1773677200059352',
'2026-03-17 00:09:21.854000', 'ONLINE', NULL, NULL, NULL, '模拟支付成功 - ONLINE', NULL, NULL, 6);
INSERT INTO `orders` (`id`, `user_id`, `product_id`, `quantity`, `total_price`, `status`, `order_type`, `created_at`,
`updated_at`, `completed_at`, `group_no`, `order_no`, `paid_at`, `payment_method`,
`receiver_address`, `receiver_name`, `receiver_phone`, `remark`, `shipped_at`, `flash_sale_id`,
`group_buying_group_id`)
VALUES (32, 15, 11, 1, 0.01, 2, 3, '2026-03-17 00:06:47', '2026-03-17 00:09:01', NULL, NULL, 'GB1773677207007351',
'2026-03-17 00:09:01.270000', 'ONLINE', NULL, NULL, NULL, '模拟支付成功 - ONLINE', NULL, NULL, 6);
INSERT INTO `orders` (`id`, `user_id`, `product_id`, `quantity`, `total_price`, `status`, `order_type`, `created_at`,
`updated_at`, `completed_at`, `group_no`, `order_no`, `paid_at`, `payment_method`,
`receiver_address`, `receiver_name`, `receiver_phone`, `remark`, `shipped_at`, `flash_sale_id`,
`group_buying_group_id`)
VALUES (33, 3, 11, 1, 0.01, 1, 3, '2026-03-17 00:17:55', '2026-03-17 00:17:55', NULL, NULL, 'GB1773677875020045', NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, 7);
INSERT INTO `orders` (`id`, `user_id`, `product_id`, `quantity`, `total_price`, `status`, `order_type`, `created_at`,
`updated_at`, `completed_at`, `group_no`, `order_no`, `paid_at`, `payment_method`,
`receiver_address`, `receiver_name`, `receiver_phone`, `remark`, `shipped_at`, `flash_sale_id`,
`group_buying_group_id`)
VALUES (34, 15, 11, 1, 0.01, 1, 3, '2026-03-17 00:18:20', '2026-03-17 00:18:20', NULL, NULL, 'GB1773677899592443', NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, 7);
COMMIT;
-- ----------------------------
-- Table structure for product_reviews
-- ----------------------------
DROP TABLE IF EXISTS `product_reviews`;
CREATE TABLE `product_reviews`
(
`id` bigint NOT NULL AUTO_INCREMENT,
`admin_reply` text,
`content` text NOT NULL,
`created_at` datetime(6) NOT NULL,
`order_id` bigint NOT NULL,
`product_id` bigint NOT NULL,
`rating` int NOT NULL,
`replied_at` datetime(6) DEFAULT NULL,
`status` int NOT NULL,
`updated_at` datetime(6) DEFAULT NULL,
`user_id` bigint NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_review_order_user_product` (`order_id`, `user_id`, `product_id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 2
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Records of product_reviews
-- ----------------------------
BEGIN;
INSERT INTO `product_reviews` (`id`, `admin_reply`, `content`, `created_at`, `order_id`, `product_id`, `rating`,
`replied_at`, `status`, `updated_at`, `user_id`)
VALUES (1, NULL, '13245', '2026-03-14 16:25:09.918000', 21, 1, 5, NULL, 1, '2026-03-16 21:26:27.855000', 3);
COMMIT;
-- ----------------------------
-- Table structure for products
-- ----------------------------
DROP TABLE IF EXISTS `products`;
CREATE TABLE `products`
(
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '商品ID',
`name` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商品名称',
`description` text COLLATE utf8mb4_unicode_ci COMMENT '商品描述',
`price` decimal(10, 2) NOT NULL COMMENT '商品价格',
`stock` int NOT NULL DEFAULT '0' COMMENT '库存数量',
`image_url` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品图片URL',
`status` tinyint DEFAULT '1' COMMENT '状态1-上架0-下架',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`category` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_price` (`price`),
KEY `idx_stock` (`stock`),
KEY `idx_status` (`status`),
KEY `idx_created_at` (`created_at`)
) ENGINE = InnoDB
AUTO_INCREMENT = 18
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT ='商品表';
-- ----------------------------
-- Records of products
-- ----------------------------
BEGIN;
INSERT INTO `products` (`id`, `name`, `description`, `price`, `stock`, `image_url`, `status`, `created_at`,
`updated_at`, `category`)
VALUES (1, 'iPhone 15 Pro Max', '苹果最新旗舰手机A17 Pro芯片钛金属设计', 9999.00, 100,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', 1, '2026-03-14 17:51:14',
'2026-03-14 17:51:14', NULL);
INSERT INTO `products` (`id`, `name`, `description`, `price`, `stock`, `image_url`, `status`, `created_at`,
`updated_at`, `category`)
VALUES (2, 'MacBook Pro 16英寸', 'M3 Max芯片36GB内存1TB存储', 25999.00, 50,
'/uploads/products/2026/03/14/4943b3f7cd1048a6ba008a5f163d9cd7.webp', 1, '2026-03-14 17:51:14',
'2026-03-14 17:51:14', '默认分类');
INSERT INTO `products` (`id`, `name`, `description`, `price`, `stock`, `image_url`, `status`, `created_at`,
`updated_at`, `category`)
VALUES (3, 'iPad Air', '10.9英寸液晶显示屏M1芯片', 4399.00, 80,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', 1, '2026-03-14 17:51:14',
'2026-03-14 17:51:14', NULL);
INSERT INTO `products` (`id`, `name`, `description`, `price`, `stock`, `image_url`, `status`, `created_at`,
`updated_at`, `category`)
VALUES (4, 'AirPods Pro 2', '主动降噪无线耳机,空间音频', 1899.00, 200,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', 1, '2026-03-14 17:51:14',
'2026-03-14 17:51:14', NULL);
INSERT INTO `products` (`id`, `name`, `description`, `price`, `stock`, `image_url`, `status`, `created_at`,
`updated_at`, `category`)
VALUES (5, 'Apple Watch Series 9', '健康监测GPS+蜂窝网络', 3199.00, 150,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', 1, '2026-03-14 17:51:14',
'2026-03-14 17:51:14', NULL);
INSERT INTO `products` (`id`, `name`, `description`, `price`, `stock`, `image_url`, `status`, `created_at`,
`updated_at`, `category`)
VALUES (6, '小米电视 65英寸', '4K超高清120Hz刷新率', 2999.00, 60,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', 1, '2026-03-14 17:51:14',
'2026-03-14 17:51:14', NULL);
INSERT INTO `products` (`id`, `name`, `description`, `price`, `stock`, `image_url`, `status`, `created_at`,
`updated_at`, `category`)
VALUES (7, '戴森吸尘器 V15', '激光显微尘,强劲吸力', 4690.00, 40,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', 1, '2026-03-14 17:51:14',
'2026-03-14 17:51:14', NULL);
INSERT INTO `products` (`id`, `name`, `description`, `price`, `stock`, `image_url`, `status`, `created_at`,
`updated_at`, `category`)
VALUES (8, '美的空调 1.5匹', '变频节能,静音运行', 2599.00, 80,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', 1, '2026-03-14 17:51:14',
'2026-03-14 17:51:14', NULL);
INSERT INTO `products` (`id`, `name`, `description`, `price`, `stock`, `image_url`, `status`, `created_at`,
`updated_at`, `category`)
VALUES (9, 'Nike Air Jordan 1', '经典篮球鞋限量版配色1', 1299.00, 119,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', 1, '2026-03-14 17:51:14',
'2026-03-14 17:51:14', NULL);
INSERT INTO `products` (`id`, `name`, `description`, `price`, `stock`, `image_url`, `status`, `created_at`,
`updated_at`, `category`)
VALUES (10, 'Adidas Ultra Boost', '缓震跑鞋Boost中底', 1599.00, 100,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', 1, '2026-03-14 17:51:14',
'2026-03-14 17:51:14', NULL);
INSERT INTO `products` (`id`, `name`, `description`, `price`, `stock`, `image_url`, `status`, `created_at`,
`updated_at`, `category`)
VALUES (11, '深入理解Java虚拟机', 'JVM原理与实践第3版', 89.00, 500,
'/uploads/products/2025/07/29/019006fd420548d0b306982931329205.jpg', 1, '2026-03-14 17:51:14',
'2026-03-14 17:51:14', NULL);
INSERT INTO `products` (`id`, `name`, `description`, `price`, `stock`, `image_url`, `status`, `created_at`,
`updated_at`, `category`)
VALUES (14, '五常大米 10kg', '东北优质大米香甜可口1111', 168.00, 192,
'/uploads/products/2026/03/14/2e380b9213824856b7d00e0d2b54b436.png', 1, '2026-03-14 17:51:14',
'2026-03-16 15:07:03', '默认分类');
INSERT INTO `products` (`id`, `name`, `description`, `price`, `stock`, `image_url`, `status`, `created_at`,
`updated_at`, `category`)
VALUES (17, '123', '', 0.01, 10, '', 1, '2026-03-14 17:51:14', '2026-03-14 17:51:14', '123');
COMMIT;
-- ----------------------------
-- Table structure for user_addresses
-- ----------------------------
DROP TABLE IF EXISTS `user_addresses`;
CREATE TABLE `user_addresses`
(
`id` bigint NOT NULL AUTO_INCREMENT,
`address` varchar(255) NOT NULL,
`city` varchar(50) DEFAULT NULL,
`created_at` datetime(6) NOT NULL,
`district` varchar(50) DEFAULT NULL,
`is_default` bit(1) NOT NULL,
`name` varchar(100) NOT NULL,
`phone` varchar(20) NOT NULL,
`province` varchar(50) DEFAULT NULL,
`updated_at` datetime(6) DEFAULT NULL,
`user_id` bigint NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Records of user_addresses
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for user_favorites
-- ----------------------------
DROP TABLE IF EXISTS `user_favorites`;
CREATE TABLE `user_favorites`
(
`id` bigint NOT NULL AUTO_INCREMENT,
`created_at` datetime(6) NOT NULL,
`product_id` bigint NOT NULL,
`user_id` bigint NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_favorite_user_product` (`user_id`, `product_id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 3
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- ----------------------------
-- Records of user_favorites
-- ----------------------------
BEGIN;
INSERT INTO `user_favorites` (`id`, `created_at`, `product_id`, `user_id`)
VALUES (2, '2026-03-16 21:26:46.264000', 14, 3);
COMMIT;
-- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users`
(
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`username` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名',
`password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码(加密)',
`email` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱',
`phone` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机号',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '用户状态1-正常0-禁用',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`last_login` datetime DEFAULT NULL COMMENT '最后登录时间',
`avatar` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`role` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`),
KEY `idx_username` (`username`),
KEY `idx_email` (`email`),
KEY `idx_phone` (`phone`),
KEY `idx_status` (`status`),
KEY `idx_created_at` (`created_at`),
KEY `idx_users_status` (`status`),
KEY `idx_users_last_login` (`last_login`),
KEY `idx_users_created_at` (`created_at`)
) ENGINE = InnoDB
AUTO_INCREMENT = 16
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT ='用户表';
-- ----------------------------
-- Records of users
-- ----------------------------
BEGIN;
INSERT INTO `users` (`id`, `username`, `password`, `email`, `phone`, `status`, `created_at`, `updated_at`, `last_login`,
`avatar`, `role`)
VALUES (1, 'demo1', '$2a$10$3V4zVguC/6eJjkuh78JqeufsNnjtHado/xUpGzrdLylF/TjH1ZoQ6', 'admin_updated@example.com',
'13888888888', 1, '2026-03-14 17:51:14', '2026-03-14 17:51:14', NULL, NULL, '');
INSERT INTO `users` (`id`, `username`, `password`, `email`, `phone`, `status`, `created_at`, `updated_at`, `last_login`,
`avatar`, `role`)
VALUES (2, 'demo2', '$2a$10$3V4zVguC/6eJjkuh78JqeufsNnjtHado/xUpGzrdLylF/TjH1ZoQ6', 'demo2@example.com', '13800138002',
1, '2026-03-14 17:51:14', '2026-03-14 17:51:14', NULL, NULL, '');
INSERT INTO `users` (`id`, `username`, `password`, `email`, `phone`, `status`, `created_at`, `updated_at`, `last_login`,
`avatar`, `role`)
VALUES (3, 'admin', '$2a$10$3V4zVguC/6eJjkuh78JqeufsNnjtHado/xUpGzrdLylF/TjH1ZoQ6', 'admin@example.com', '13800138000',
1, '2026-03-14 17:51:14', '2026-03-17 00:17:36', '2026-03-17 00:17:36', NULL, '');
INSERT INTO `users` (`id`, `username`, `password`, `email`, `phone`, `status`, `created_at`, `updated_at`, `last_login`,
`avatar`, `role`)
VALUES (4, 'testuser1', '$2a$10$3V4zVguC/6eJjkuh78JqeufsNnjtHado/xUpGzrdLylF/TjH1ZoQ6', 'test1@example.com',
'13800138003', 1, '2026-03-14 17:51:14', '2026-03-14 17:51:14', NULL, NULL, '');
INSERT INTO `users` (`id`, `username`, `password`, `email`, `phone`, `status`, `created_at`, `updated_at`, `last_login`,
`avatar`, `role`)
VALUES (5, 'testuser2', '$2a$10$3V4zVguC/6eJjkuh78JqeufsNnjtHado/xUpGzrdLylF/TjH1ZoQ6', 'test2@example.com',
'13800138004', 1, '2026-03-14 17:51:14', '2026-03-14 17:51:14', NULL, NULL, '');
INSERT INTO `users` (`id`, `username`, `password`, `email`, `phone`, `status`, `created_at`, `updated_at`, `last_login`,
`avatar`, `role`)
VALUES (6, 'testuser3', '$2a$10$3V4zVguC/6eJjkuh78JqeufsNnjtHado/xUpGzrdLylF/TjH1ZoQ6', 'test3@example.com',
'13800138005', 1, '2026-03-14 17:51:14', '2026-03-14 17:51:14', NULL, NULL, '');
INSERT INTO `users` (`id`, `username`, `password`, `email`, `phone`, `status`, `created_at`, `updated_at`, `last_login`,
`avatar`, `role`)
VALUES (7, 'testuser4', '$2a$10$3V4zVguC/6eJjkuh78JqeufsNnjtHado/xUpGzrdLylF/TjH1ZoQ6', 'test4@example.com',
'13800138006', 1, '2026-03-14 17:51:14', '2026-03-14 17:51:14', NULL, NULL, '');
INSERT INTO `users` (`id`, `username`, `password`, `email`, `phone`, `status`, `created_at`, `updated_at`, `last_login`,
`avatar`, `role`)
VALUES (8, 'testuser5', '$2a$10$3V4zVguC/6eJjkuh78JqeufsNnjtHado/xUpGzrdLylF/TjH1ZoQ6', 'test5@example.com',
'13800138007', 1, '2026-03-14 17:51:14', '2026-03-14 17:51:14', NULL, NULL, '');
INSERT INTO `users` (`id`, `username`, `password`, `email`, `phone`, `status`, `created_at`, `updated_at`, `last_login`,
`avatar`, `role`)
VALUES (11, 'student', '$2a$10$3V4zVguC/6eJjkuh78JqeufsNnjtHado/xUpGzrdLylF/TjH1ZoQ6', '1231231@gmail.com',
'19889899898', 1, '2026-03-14 17:51:14', '2026-03-14 17:51:14', NULL, NULL, '');
INSERT INTO `users` (`id`, `username`, `password`, `email`, `phone`, `status`, `created_at`, `updated_at`, `last_login`,
`avatar`, `role`)
VALUES (12, 'student1', '$2a$10$3V4zVguC/6eJjkuh78JqeufsNnjtHado/xUpGzrdLylF/TjH1ZoQ6', 'gz1@gmail.com', '19566111010',
1, '2026-03-14 17:51:14', '2026-03-14 17:51:14', NULL, NULL, '');
INSERT INTO `users` (`id`, `username`, `password`, `email`, `phone`, `status`, `created_at`, `updated_at`, `last_login`,
`avatar`, `role`)
VALUES (13, '123123', '$2a$10$3V4zVguC/6eJjkuh78JqeufsNnjtHado/xUpGzrdLylF/TjH1ZoQ6', NULL, NULL, 1,
'2026-03-14 17:51:14', '2026-03-14 17:51:14', NULL, NULL, '');
INSERT INTO `users` (`id`, `username`, `password`, `email`, `phone`, `status`, `created_at`, `updated_at`, `last_login`,
`avatar`, `role`)
VALUES (14, '123', '$2a$10$3V4zVguC/6eJjkuh78JqeufsNnjtHado/xUpGzrdLylF/TjH1ZoQ6', '123@qq.com', '', 1,
'2026-03-14 17:51:14', '2026-03-14 17:51:14', NULL, '', 'USER');
INSERT INTO `users` (`id`, `username`, `password`, `email`, `phone`, `status`, `created_at`, `updated_at`, `last_login`,
`avatar`, `role`)
VALUES (15, '123456', '$2a$10$a7YnUMYMmgWt1mdf6WmyEux/4YPT05rutsab2KLajgGYf60aZfbUW', '1232@qq.com', '13223322332', 1,
'2026-03-16 23:08:57', '2026-03-17 00:18:13', '2026-03-17 00:18:13', '', 'USER');
COMMIT;
-- ----------------------------
-- View structure for active_flash_sales
-- ----------------------------
DROP VIEW IF EXISTS `active_flash_sales`;
CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `active_flash_sales` AS
select `fs`.`id` AS `id`,
`fs`.`product_id` AS `product_id`,
`p`.`name` AS `product_name`,
`p`.`price` AS `original_price`,
`fs`.`flash_price` AS `flash_price`,
`fs`.`flash_stock` AS `flash_stock`,
`fs`.`start_time` AS `start_time`,
`fs`.`end_time` AS `end_time`,
`fs`.`status` AS `status`,
`p`.`image_url` AS `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));
-- ----------------------------
-- View structure for order_statistics
-- ----------------------------
DROP VIEW IF EXISTS `order_statistics`;
CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `order_statistics` AS
select cast(`orders`.`created_at` as date) AS `order_date`,
count(0) AS `total_orders`,
sum((case when (`orders`.`status` = 1) then 1 else 0 end)) AS `pending_orders`,
sum((case when (`orders`.`status` = 2) then 1 else 0 end)) AS `paid_orders`,
sum((case when (`orders`.`status` = 4) then 1 else 0 end)) AS `completed_orders`,
sum((case when (`orders`.`order_type` = 2) then 1 else 0 end)) AS `flash_sale_orders`,
sum(`orders`.`total_price`) AS `total_amount`
from `orders`
group by cast(`orders`.`created_at` as date)
order by `order_date` desc;
SET FOREIGN_KEY_CHECKS = 1;

View File

@@ -1,376 +0,0 @@
-- MySQL dump 10.13 Distrib 5.7.24, for osx11.1 (x86_64)
--
-- Host: 127.0.0.1 Database: flash_sale_db
-- ------------------------------------------------------
-- Server version 8.0.36
/*!40101 SET @OLD_CHARACTER_SET_CLIENT = @@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS = @@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION = @@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE = @@TIME_ZONE */;
/*!40103 SET TIME_ZONE = '+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS = @@UNIQUE_CHECKS, UNIQUE_CHECKS = 0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS = @@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS = 0 */;
/*!40101 SET @OLD_SQL_MODE = @@SQL_MODE, SQL_MODE = 'NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES = @@SQL_NOTES, SQL_NOTES = 0 */;
--
-- Temporary table structure for view `active_flash_sales`
--
DROP TABLE IF EXISTS `active_flash_sales`;
/*!50001 DROP VIEW IF EXISTS `active_flash_sales`*/;
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
/*!50001 CREATE VIEW `active_flash_sales` AS
SELECT 1 AS `id`,
1 AS `product_id`,
1 AS `product_name`,
1 AS `original_price`,
1 AS `flash_price`,
1 AS `flash_stock`,
1 AS `start_time`,
1 AS `end_time`,
1 AS `status`,
1 AS `image_url`
*/;
SET character_set_client = @saved_cs_client;
--
-- Table structure for table `flash_sales`
--
DROP TABLE IF EXISTS `flash_sales`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `flash_sales`
(
`id` bigint NOT NULL AUTO_INCREMENT 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 NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_product_id` (`product_id`),
KEY `idx_start_time` (`start_time`),
KEY `idx_end_time` (`end_time`),
KEY `idx_status` (`status`),
KEY `idx_created_at` (`created_at`),
CONSTRAINT `flash_sales_ibfk_1` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE
) ENGINE = InnoDB
AUTO_INCREMENT = 10
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT ='秒杀活动表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `flash_sales`
--
/*!40000 ALTER TABLE `flash_sales`
DISABLE KEYS */;
INSERT INTO `flash_sales`
VALUES (1, 1, 7999.00, 19, '2025-06-29 02:06:16', '2025-07-12 07:07:00', 2, '2025-06-29 02:07:16',
'2025-07-04 14:02:39'),
(2, 4, 1299.00, 49, '2025-06-29 02:06:16', '2025-07-12 07:07:00', 2, '2025-06-29 02:07:16',
'2025-07-03 07:37:53'),
(3, 6, 1999.00, 15, '2025-06-29 02:06:16', '2025-07-12 07:07:00', 2, '2025-06-29 02:07:16',
'2025-07-03 03:23:51'),
(4, 2, 19999.00, 10, '2025-06-29 02:06:16', '2025-06-29 06:07:16', 2, '2025-06-29 02:07:16',
'2025-07-02 08:39:07'),
(5, 9, 899.00, 29, '2025-06-29 02:06:16', '2025-07-12 07:07:00', 2, '2025-06-29 02:07:16',
'2025-07-03 03:23:51'),
(7, 7, 3999.00, 10, '2025-06-29 02:06:16', '2025-07-12 07:07:00', 2, '2025-06-29 02:07:16',
'2025-07-03 03:23:51'),
(8, 11, 59.00, 100, '2025-06-29 02:06:16', '2025-07-12 07:07:00', 2, '2025-06-29 02:07:16',
'2025-07-03 03:23:51'),
(9, 12, 1.00, 1, '2025-07-05 22:44:00', '2025-07-12 22:44:00', 1, '2025-07-04 22:44:57', '2025-07-04 14:44:56');
/*!40000 ALTER TABLE `flash_sales`
ENABLE KEYS */;
--
-- Temporary table structure for view `order_statistics`
--
DROP TABLE IF EXISTS `order_statistics`;
/*!50001 DROP VIEW IF EXISTS `order_statistics`*/;
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
/*!50001 CREATE VIEW `order_statistics` AS
SELECT 1 AS `order_date`,
1 AS `total_orders`,
1 AS `pending_orders`,
1 AS `paid_orders`,
1 AS `completed_orders`,
1 AS `flash_sale_orders`,
1 AS `total_amount`
*/;
SET character_set_client = @saved_cs_client;
--
-- Table structure for table `orders`
--
DROP TABLE IF EXISTS `orders`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `orders`
(
`id` bigint NOT NULL AUTO_INCREMENT 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 NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_product_id` (`product_id`),
KEY `idx_status` (`status`),
KEY `idx_order_type` (`order_type`),
KEY `idx_created_at` (`created_at`),
KEY `idx_user_product` (`user_id`, `product_id`),
CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,
CONSTRAINT `orders_ibfk_2` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE
) ENGINE = InnoDB
AUTO_INCREMENT = 20
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT ='订单表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `orders`
--
/*!40000 ALTER TABLE `orders`
DISABLE KEYS */;
INSERT INTO `orders`
VALUES (1, 1, 11, 1, 89.00, 4, 1, '2025-06-27 02:07:16', '2025-06-28 02:07:16'),
(2, 1, 12, 1, 79.00, 2, 1, '2025-06-28 02:07:16', '2025-06-28 02:07:16'),
(3, 2, 14, 1, 168.00, 3, 1, '2025-06-28 23:07:16', '2025-06-29 00:07:16'),
(4, 2, 7, 1, 3999.00, 1, 2, '2025-06-29 01:07:16', '2025-06-29 01:07:16'),
(6, 5, 10, 1, 1599.00, 4, 1, '2025-06-28 14:07:16', '2025-06-28 16:07:16'),
(7, 6, 8, 1, 2599.00, 3, 1, '2025-06-28 02:07:16', '2025-06-28 06:07:16'),
(8, 11, 5, 1, 3199.00, 2, 1, '2025-06-27 02:07:16', '2025-07-02 08:57:17'),
(10, 11, 9, 1, 1299.00, 2, 1, '2025-07-03 00:11:39', '2025-07-03 00:46:10'),
(11, 11, 14, 1, 168.00, 2, 1, '2025-07-03 00:18:55', '2025-07-03 00:39:56'),
(12, 11, 13, 1, 2680.00, 1, 1, '2025-07-03 08:48:38', '2025-07-03 08:48:38'),
(13, 11, 13, 1, 2680.00, 1, 1, '2025-07-03 08:56:50', '2025-07-03 08:56:50'),
(14, 11, 14, 1, 168.00, 1, 1, '2025-07-03 08:57:46', '2025-07-03 08:57:46'),
(15, 11, 14, 1, 168.00, 2, 1, '2025-07-03 11:08:56', '2025-07-03 11:09:06'),
(16, 11, 9, 1, 899.00, 2, 2, '2025-07-03 11:23:51', '2025-07-03 11:24:07'),
(17, 11, 4, 1, 1299.00, 1, 2, '2025-07-03 15:37:53', '2025-07-03 15:37:53'),
(18, 3, 1, 1, 7999.00, 2, 2, '2025-07-04 22:02:40', '2025-07-04 22:03:18'),
(19, 3, 14, 1, 168.00, 2, 1, '2025-07-04 22:03:38', '2025-07-04 22:03:46');
/*!40000 ALTER TABLE `orders`
ENABLE KEYS */;
--
-- Table structure for table `products`
--
DROP TABLE IF EXISTS `products`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `products`
(
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '商品ID',
`name` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商品名称',
`description` text COLLATE utf8mb4_unicode_ci COMMENT '商品描述',
`price` decimal(10, 2) NOT NULL COMMENT '商品价格',
`stock` int NOT NULL DEFAULT '0' COMMENT '库存数量',
`image_url` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '商品图片URL',
`status` tinyint DEFAULT '1' COMMENT '状态1-上架0-下架',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_name` (`name`),
KEY `idx_price` (`price`),
KEY `idx_stock` (`stock`),
KEY `idx_status` (`status`),
KEY `idx_created_at` (`created_at`)
) ENGINE = InnoDB
AUTO_INCREMENT = 17
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT ='商品表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `products`
--
/*!40000 ALTER TABLE `products`
DISABLE KEYS */;
INSERT INTO `products`
VALUES (1, 'iPhone 15 Pro Max', '苹果最新旗舰手机A17 Pro芯片钛金属设计', 9999.00, 100, '/images/iphone15.jpg', 1,
'2025-06-29 02:07:16', '2025-06-29 02:07:16'),
(2, 'MacBook Pro 16英寸', 'M3 Max芯片36GB内存1TB存储', 25999.00, 50, '/images/macbook.jpg', 1,
'2025-06-29 02:07:16', '2025-06-29 02:07:16'),
(3, 'iPad Air', '10.9英寸液晶显示屏M1芯片', 4399.00, 80, '/images/ipad.jpg', 1, '2025-06-29 02:07:16',
'2025-06-29 02:07:16'),
(4, 'AirPods Pro 2', '主动降噪无线耳机,空间音频', 1899.00, 200, '/images/airpods.jpg', 1, '2025-06-29 02:07:16',
'2025-06-29 02:07:16'),
(5, 'Apple Watch Series 9', '健康监测GPS+蜂窝网络', 3199.00, 150, '/images/watch.jpg', 1, '2025-06-29 02:07:16',
'2025-06-29 02:07:16'),
(6, '小米电视 65英寸', '4K超高清120Hz刷新率', 2999.00, 60, '/images/tv.jpg', 1, '2025-06-29 02:07:16',
'2025-06-29 02:07:16'),
(7, '戴森吸尘器 V15', '激光显微尘,强劲吸力', 4690.00, 40, '/images/dyson.jpg', 1, '2025-06-29 02:07:16',
'2025-06-29 02:07:16'),
(8, '美的空调 1.5匹', '变频节能,静音运行', 2599.00, 80, '/images/airconditioner.jpg', 1, '2025-06-29 02:07:16',
'2025-06-29 02:07:16'),
(9, 'Nike Air Jordan 1', '经典篮球鞋限量版配色1', 1299.00, 119, '/images/jordan.jpg', 1, '2025-06-29 02:07:16',
'2025-07-02 16:11:39'),
(10, 'Adidas Ultra Boost', '缓震跑鞋Boost中底', 1599.00, 100, '/images/ultraboost.jpg', 1,
'2025-06-29 02:07:16', '2025-06-29 02:07:16'),
(11, '深入理解Java虚拟机', 'JVM原理与实践第3版', 89.00, 500, '/images/jvm-book.jpg', 1, '2025-06-29 02:07:16',
'2025-06-29 02:07:16'),
(12, 'Redis设计与实现', 'Redis内部机制详解', 79.00, 300, '/images/redis-book.jpg', 1, '2025-06-29 02:07:16',
'2025-06-29 02:07:16'),
(13, '茅台酒 53度 500ml', '国酒茅台,收藏佳品', 2680.00, 28, '/images/maotai.jpg', 1, '2025-06-29 02:07:16',
'2025-07-03 00:56:50'),
(14, '五常大米 10kg', '东北优质大米香甜可口1111', 168.00, 196, '/images/rice.jpg', 1, '2025-06-29 02:07:16',
'2025-07-04 14:03:38');
/*!40000 ALTER TABLE `products`
ENABLE KEYS */;
--
-- Table structure for table `users`
--
DROP TABLE IF EXISTS `users`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `users`
(
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`username` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名',
`password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码(加密)',
`email` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱',
`phone` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机号',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '用户状态1-正常0-禁用',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`last_login` datetime DEFAULT NULL COMMENT '最后登录时间',
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`),
KEY `idx_username` (`username`),
KEY `idx_email` (`email`),
KEY `idx_phone` (`phone`),
KEY `idx_status` (`status`),
KEY `idx_created_at` (`created_at`),
KEY `idx_users_status` (`status`),
KEY `idx_users_last_login` (`last_login`),
KEY `idx_users_created_at` (`created_at`)
) ENGINE = InnoDB
AUTO_INCREMENT = 13
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci COMMENT ='用户表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `users`
--
/*!40000 ALTER TABLE `users`
DISABLE KEYS */;
INSERT INTO `users`
VALUES (1, 'demo1', '$2a$10$UD7rr9R.hQJko9Nf.Yz9ku461It2c7RygHDDFD/cbBqJiTtBNL0pW', 'admin_updated@example.com',
'13888888888', 1, '2025-06-29 02:07:16', '2025-07-04 14:00:34', NULL),
(2, 'demo2', '$2a$10$UD7rr9R.hQJko9Nf.Yz9ku461It2c7RygHDDFD/cbBqJiTtBNL0pW', 'demo2@example.com', '13800138002',
1, '2025-06-29 02:07:16', '2025-07-04 14:00:34', NULL),
(3, 'admin', '$2a$10$UD7rr9R.hQJko9Nf.Yz9ku461It2c7RygHDDFD/cbBqJiTtBNL0pW', 'admin@example.com', '13800138000',
1, '2025-06-29 02:07:16', '2025-07-04 14:00:34', NULL),
(4, 'testuser1', '$2a$10$UD7rr9R.hQJko9Nf.Yz9ku461It2c7RygHDDFD/cbBqJiTtBNL0pW', 'test1@example.com',
'13800138003', 1, '2025-06-29 02:07:16', '2025-07-04 14:00:34', NULL),
(5, 'testuser2', '$2a$10$UD7rr9R.hQJko9Nf.Yz9ku461It2c7RygHDDFD/cbBqJiTtBNL0pW', 'test2@example.com',
'13800138004', 1, '2025-06-29 02:07:16', '2025-07-04 14:00:34', NULL),
(6, 'testuser3', '$2a$10$UD7rr9R.hQJko9Nf.Yz9ku461It2c7RygHDDFD/cbBqJiTtBNL0pW', 'test3@example.com',
'13800138005', 1, '2025-06-29 02:07:16', '2025-07-04 14:00:34', NULL),
(7, 'testuser4', '$2a$10$UD7rr9R.hQJko9Nf.Yz9ku461It2c7RygHDDFD/cbBqJiTtBNL0pW', 'test4@example.com',
'13800138006', 1, '2025-06-29 02:07:16', '2025-07-04 14:00:34', NULL),
(8, 'testuser5', '$2a$10$UD7rr9R.hQJko9Nf.Yz9ku461It2c7RygHDDFD/cbBqJiTtBNL0pW', 'test5@example.com',
'13800138007', 1, '2025-06-29 02:07:16', '2025-07-04 14:00:34', NULL),
(11, 'student', '$2a$10$UD7rr9R.hQJko9Nf.Yz9ku461It2c7RygHDDFD/cbBqJiTtBNL0pW', '1231231@gmail.com',
'19889899898', 1, '2025-06-30 14:34:57', '2025-07-04 14:00:34', NULL),
(12, 'student1', '$2a$10$UD7rr9R.hQJko9Nf.Yz9ku461It2c7RygHDDFD/cbBqJiTtBNL0pW', 'gz1@gmail.com', '19566111010',
1, '2025-07-04 22:00:18', '2025-07-04 22:00:18', NULL);
/*!40000 ALTER TABLE `users`
ENABLE KEYS */;
--
-- Dumping routines for database 'flash_sale_db'
--
--
-- Final view structure for view `active_flash_sales`
--
/*!50001 DROP VIEW IF EXISTS `active_flash_sales`*/;
/*!50001 SET @saved_cs_client = @@character_set_client */;
/*!50001 SET @saved_cs_results = @@character_set_results */;
/*!50001 SET @saved_col_connection = @@collation_connection */;
/*!50001 SET character_set_client = utf8mb4 */;
/*!50001 SET character_set_results = utf8mb4 */;
/*!50001 SET collation_connection = utf8mb4_0900_ai_ci */;
/*!50001 CREATE ALGORITHM = UNDEFINED */ /*!50013 DEFINER =`root`@`%` SQL SECURITY DEFINER */ /*!50001 VIEW `active_flash_sales` AS
select `fs`.`id` AS `id`,
`fs`.`product_id` AS `product_id`,
`p`.`name` AS `product_name`,
`p`.`price` AS `original_price`,
`fs`.`flash_price` AS `flash_price`,
`fs`.`flash_stock` AS `flash_stock`,
`fs`.`start_time` AS `start_time`,
`fs`.`end_time` AS `end_time`,
`fs`.`status` AS `status`,
`p`.`image_url` AS `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))
*/;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
--
-- Final view structure for view `order_statistics`
--
/*!50001 DROP VIEW IF EXISTS `order_statistics`*/;
/*!50001 SET @saved_cs_client = @@character_set_client */;
/*!50001 SET @saved_cs_results = @@character_set_results */;
/*!50001 SET @saved_col_connection = @@collation_connection */;
/*!50001 SET character_set_client = utf8mb4 */;
/*!50001 SET character_set_results = utf8mb4 */;
/*!50001 SET collation_connection = utf8mb4_0900_ai_ci */;
/*!50001 CREATE ALGORITHM = UNDEFINED */ /*!50013 DEFINER =`root`@`%` SQL SECURITY DEFINER */ /*!50001 VIEW `order_statistics` AS
select cast(`orders`.`created_at` as date) AS `order_date`,
count(0) AS `total_orders`,
sum((case when (`orders`.`status` = 1) then 1 else 0 end)) AS `pending_orders`,
sum((case when (`orders`.`status` = 2) then 1 else 0 end)) AS `paid_orders`,
sum((case when (`orders`.`status` = 4) then 1 else 0 end)) AS `completed_orders`,
sum((case when (`orders`.`order_type` = 2) then 1 else 0 end)) AS `flash_sale_orders`,
sum(`orders`.`total_price`) AS `total_amount`
from `orders`
group by cast(`orders`.`created_at` as date)
order by `order_date` desc
*/;
/*!50001 SET character_set_client = @saved_cs_client */;
/*!50001 SET character_set_results = @saved_cs_results */;
/*!50001 SET collation_connection = @saved_col_connection */;
/*!40103 SET TIME_ZONE = @OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE = @OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS = @OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS = @OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT = @OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS = @OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION = @OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES = @OLD_SQL_NOTES */;
-- Dump completed on 2025-07-04 23:11:23

View File

@@ -1,17 +0,0 @@
-- 演示账号初始化脚本
-- 账号demo1 / 123456demo2 / 123456admin / admin123
USE flash_sale_db;
INSERT INTO users (username, password, email, phone, avatar, 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', '', 'USER', 1, NOW(), NOW()),
('admin', '$2a$10$DOwVJZHH.5PkZKJKJKJKJOh.3VQ8nl83hq8/Qhx6.5PkZKJKJKJKJ', 'admin@example.com', '13800138000', '', 'ADMIN', 1, NOW(), NOW())
ON DUPLICATE KEY UPDATE
email = VALUES(email),
phone = VALUES(phone),
avatar = VALUES(avatar),
role = VALUES(role),
status = VALUES(status),
updated_at = NOW();

View File

@@ -1,132 +0,0 @@
-- ============================================================
-- 拼团历史数据修复脚本
-- 修复内容:
-- 1. 已满员但状态仍为 FORMING(1) 的团组 → 更新为 SUCCESS(2)
-- 2. 已成团团组的成员状态从 已加入(1) → 已成团(2)
-- 3. 拼团订单的 order_type 修正为 3拼团订单
-- 4. 已过期且未满员的 FORMING 团组 → 更新为 FAILED(3)
-- 5. 已失败团组的成员状态更新
-- 使用方式mysql -u root -p flash_sale_db < fix-groupbuying-data.sql
-- ============================================================
-- 先查看当前数据状况(仅查询,不修改)
SELECT '====== 修复前数据概况 ======' AS info;
SELECT '满员但仍为FORMING的团组' AS category, COUNT(*) AS cnt
FROM group_buying_group
WHERE status = 1 AND current_members >= required_members;
SELECT '已过期但仍为FORMING的团组' AS category, COUNT(*) AS cnt
FROM group_buying_group
WHERE status = 1 AND expire_time < NOW();
SELECT '拼团订单但order_type不是3的订单' AS category, COUNT(*) AS cnt
FROM orders
WHERE group_buying_group_id IS NOT NULL AND order_type != 3;
SELECT '缺少order_items记录的拼团订单' AS category, COUNT(*) AS cnt
FROM orders o
WHERE o.group_buying_group_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM order_items oi WHERE oi.order_id = o.id);
-- ============================================================
-- 修复1: 已满员的团组 → SUCCESS(2)
-- ============================================================
UPDATE group_buying_group
SET status = 2,
completed_at = COALESCE(completed_at, NOW())
WHERE status = 1
AND current_members >= required_members;
SELECT CONCAT('修复1完成: ', ROW_COUNT(), ' 个满员团组已更新为已成团') AS result;
-- ============================================================
-- 修复2: 已成团(status=2)团组的成员状态 → 已成团(2)
-- ============================================================
UPDATE group_buying_member m
INNER JOIN group_buying_group g ON m.group_id = g.id
SET m.status = 2
WHERE g.status = 2
AND m.status = 1;
SELECT CONCAT('修复2完成: ', ROW_COUNT(), ' 个成员状态已更新为已成团') AS result;
-- ============================================================
-- 修复3: 已过期且未满员的团组 → FAILED(3)
-- ============================================================
UPDATE group_buying_group
SET status = 3
WHERE status = 1
AND expire_time < NOW()
AND current_members < required_members;
SELECT CONCAT('修复3完成: ', ROW_COUNT(), ' 个过期团组已更新为已失败') AS result;
-- ============================================================
-- 修复4: 已失败(status=3)团组的成员状态 → 已退出(3)
-- ============================================================
UPDATE group_buying_member m
INNER JOIN group_buying_group g ON m.group_id = g.id
SET m.status = 3
WHERE g.status = 3
AND m.status = 1;
SELECT CONCAT('修复4完成: ', ROW_COUNT(), ' 个失败团组成员已更新为已退出') AS result;
-- ============================================================
-- 修复5: 拼团关联订单的 order_type 修正为 3
-- ============================================================
UPDATE orders
SET order_type = 3
WHERE group_buying_group_id IS NOT NULL
AND order_type != 3;
SELECT CONCAT('修复5完成: ', ROW_COUNT(), ' 个拼团订单的order_type已修正') AS result;
-- ============================================================
-- 修复6: 补充缺失的 order_items 记录(拼团订单)
-- ============================================================
INSERT INTO order_items (order_id, product_id, product_name, product_image_url, price, quantity, subtotal, created_at)
SELECT o.id,
o.product_id,
COALESCE(p.name, '未知商品'),
p.image_url,
o.total_price / o.quantity,
o.quantity,
o.total_price,
o.created_at
FROM orders o
LEFT JOIN products p ON o.product_id = p.id
WHERE o.group_buying_group_id IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM order_items oi WHERE oi.order_id = o.id);
SELECT CONCAT('修复6完成: ', ROW_COUNT(), ' 条缺失的订单明细已补充') AS result;
-- ============================================================
-- 修复7: 已失败团组关联的待支付订单 → 取消(5)
-- ============================================================
UPDATE orders o
INNER JOIN group_buying_group g ON o.group_buying_group_id = g.id
SET o.status = 5
WHERE g.status = 3
AND o.status = 1;
SELECT CONCAT('修复7完成: ', ROW_COUNT(), ' 个失败团组的待支付订单已取消') AS result;
-- 修复后数据验证
SELECT '====== 修复后数据验证 ======' AS info;
SELECT status,
CASE status WHEN 1 THEN '拼团中' WHEN 2 THEN '已成团' WHEN 3 THEN '已失败' END AS status_desc,
COUNT(*) AS cnt
FROM group_buying_group
GROUP BY status
ORDER BY status;
SELECT '仍有异常的团组满员但非SUCCESS' AS category, COUNT(*) AS cnt
FROM group_buying_group
WHERE current_members >= required_members AND status != 2;
SELECT '仍有异常的团组过期但仍FORMING' AS category, COUNT(*) AS cnt
FROM group_buying_group
WHERE expire_time < NOW() AND status = 1;

View File

@@ -1,338 +0,0 @@
-- 社区生鲜团购系统数据库结构
-- 说明:本脚本只负责数据库对象定义,不包含演示数据。
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 '手机号',
avatar VARCHAR(500) COMMENT '头像',
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 ='用户表';
-- ================================
-- 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 '商品价格',
category VARCHAR(100) COMMENT '商品分类',
stock INT NOT NULL DEFAULT 0 COMMENT '库存数量',
image_url VARCHAR(500) COMMENT '商品图片URL',
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 ='商品表';
-- ================================
-- 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 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. 订单主表
-- ================================
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 '聚合订单号(兼容旧数据)',
user_id BIGINT NOT NULL COMMENT '用户ID',
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 '收货地址',
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 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 ='订单主表';
-- ================================
-- 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 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
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 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 ='用户地址表';
-- ================================
-- 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 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 (
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 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_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. 拼团活动表
-- ================================
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 TABLE IF NOT EXISTS order_returns (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
return_no VARCHAR(64) NOT NULL UNIQUE COMMENT '退货单号',
order_id BIGINT NOT NULL COMMENT '订单ID',
user_id BIGINT NOT NULL COMMENT '用户ID',
refund_amount DECIMAL(10,2) NOT NULL COMMENT '退款金额',
reason VARCHAR(500) NOT NULL COMMENT '退货原因',
description TEXT COMMENT '详细描述',
images VARCHAR(2000) COMMENT '图片URL(逗号分隔)',
status TINYINT NOT NULL DEFAULT 1 COMMENT '1-待审核 2-已同意 3-退货中 4-已完成 5-已拒绝 6-已取消',
reject_reason VARCHAR(500) COMMENT '拒绝原因',
admin_remark VARCHAR(500) COMMENT '管理员备注',
return_tracking VARCHAR(100) COMMENT '退货物流单号',
reviewed_at TIMESTAMP NULL,
shipped_at TIMESTAMP NULL,
completed_at TIMESTAMP NULL,
cancelled_at TIMESTAMP NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
CONSTRAINT fk_order_returns_order FOREIGN KEY (order_id) REFERENCES orders(id),
CONSTRAINT fk_order_returns_user FOREIGN KEY (user_id) REFERENCES users(id),
INDEX idx_returns_user_id (user_id),
INDEX idx_returns_status (status),
INDEX idx_returns_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单退货表';
-- 13. 视图
-- ================================
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;

View File

@@ -1,126 +0,0 @@
-- 测试业务数据初始化脚本
-- 依赖:请先执行 schema.sql 和 demo-users.sql
USE flash_sale_db;
SET FOREIGN_KEY_CHECKS = 0;
DELETE FROM user_favorites;
DELETE FROM product_reviews;
DELETE FROM user_addresses;
DELETE FROM order_items;
DELETE FROM orders;
DELETE FROM flash_sales;
DELETE FROM products;
DELETE FROM users WHERE username LIKE 'testuser%';
ALTER TABLE products AUTO_INCREMENT = 1;
ALTER TABLE flash_sales AUTO_INCREMENT = 1;
ALTER TABLE orders AUTO_INCREMENT = 1;
ALTER TABLE order_items AUTO_INCREMENT = 1;
ALTER TABLE user_addresses AUTO_INCREMENT = 1;
ALTER TABLE product_reviews AUTO_INCREMENT = 1;
ALTER TABLE user_favorites AUTO_INCREMENT = 1;
SET FOREIGN_KEY_CHECKS = 1;
-- ================================
-- 1. 测试用户
-- ================================
INSERT INTO users (username, password, email, phone, avatar, role, status, created_at, updated_at)
VALUES
('testuser1', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2uheWG/igi.', 'test1@example.com', '13800138003', '', 'USER', 1, NOW(), NOW()),
('testuser2', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2uheWG/igi.', 'test2@example.com', '13800138004', '', 'USER', 1, NOW(), NOW()),
('testuser3', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2uheWG/igi.', 'test3@example.com', '13800138005', '', 'USER', 1, NOW(), NOW())
ON DUPLICATE KEY UPDATE
email = VALUES(email),
phone = VALUES(phone),
updated_at = NOW();
-- ================================
-- 2. 商品
-- ================================
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.svg', 1, NOW(), NOW()),
('MacBook Pro 16英寸', 'M3 Max 芯片36GB 内存1TB 存储。', 25999.00, '电子产品', 50, '/images/macbook.svg', 1, NOW(), NOW()),
('iPad Air', '10.9 英寸显示屏,轻薄便携。', 4399.00, '电子产品', 80, '/images/ipad.svg', 1, NOW(), NOW()),
('AirPods Pro 2', '主动降噪无线耳机。', 1899.00, '电子产品', 200, '/images/default-product.svg', 1, NOW(), NOW()),
('Apple Watch Series 9', '健康监测与运动记录。', 3199.00, '电子产品', 150, '/images/default-product.svg', 1, NOW(), NOW()),
('小米电视 65英寸', '4K 超高清120Hz 刷新率。', 2999.00, '家电', 60, '/images/default-product.svg', 1, NOW(), NOW()),
('戴森吸尘器 V15', '激光显微尘,强劲吸力。', 4690.00, '家电', 40, '/images/default-product.svg', 1, NOW(), NOW()),
('Nike Air Jordan 1', '经典篮球鞋,限量版配色。', 1299.00, '服饰鞋包', 120, '/images/default-product.svg', 1, NOW(), NOW()),
('深入理解Java虚拟机', 'JVM 原理与实践,第 3 版。', 89.00, '图书音像', 500, '/images/default-product.svg', 1, NOW(), NOW()),
('五常大米 10kg', '东北优质大米,香甜可口。', 168.00, '食品饮料', 200, '/images/default-product.svg', 1, NOW(), NOW());
-- ================================
-- 3. 秒杀活动
-- ================================
INSERT INTO flash_sales (product_id, flash_price, flash_stock, start_time, end_time, status, created_at, updated_at)
VALUES
(1, 7999.00, 20, DATE_SUB(NOW(), INTERVAL 10 MINUTE), DATE_ADD(NOW(), INTERVAL 2 HOUR), 2, NOW(), NOW()),
(4, 1299.00, 50, DATE_SUB(NOW(), INTERVAL 5 MINUTE), DATE_ADD(NOW(), INTERVAL 1 HOUR), 2, NOW(), NOW()),
(6, 1999.00, 15, DATE_SUB(NOW(), INTERVAL 1 MINUTE), DATE_ADD(NOW(), INTERVAL 3 HOUR), 2, NOW(), NOW()),
(2, 19999.00, 10, DATE_ADD(NOW(), INTERVAL 30 MINUTE), DATE_ADD(NOW(), INTERVAL 4 HOUR), 1, NOW(), NOW()),
(8, 899.00, 30, DATE_ADD(NOW(), INTERVAL 1 HOUR), DATE_ADD(NOW(), INTERVAL 5 HOUR), 1, NOW(), NOW()),
(9, 59.00, 100, DATE_SUB(NOW(), INTERVAL 1 DAY), DATE_SUB(NOW(), INTERVAL 22 HOUR), 3, NOW(), NOW());
-- ================================
-- 4. 地址
-- ================================
INSERT INTO user_addresses (user_id, name, phone, province, city, district, address, is_default, created_at, updated_at)
SELECT id, '演示用户一', '13800138001', '上海市', '上海市', '浦东新区', '张江高科技园区 100 号', 1, NOW(), NOW() FROM users WHERE username = 'demo1'
UNION ALL
SELECT id, '演示用户二', '13800138002', '浙江省', '杭州市', '西湖区', '文三路 88 号', 1, NOW(), NOW() FROM users WHERE username = 'demo2'
UNION ALL
SELECT id, '测试用户一', '13800138003', '广东省', '深圳市', '南山区', '科技园科苑路 18 号', 1, NOW(), NOW() FROM users WHERE username = 'testuser1';
-- ================================
-- 5. 订单主表
-- ================================
INSERT INTO orders (
order_no, group_no, user_id, product_id, flash_sale_id, quantity, total_price, status, order_type,
receiver_name, receiver_phone, receiver_address, remark, payment_method,
paid_at, shipped_at, completed_at, created_at, updated_at
)
VALUES
('ORD202603110001', NULL, (SELECT id FROM users WHERE username = 'demo1'), 9, NULL, 1, 89.00, 4, 1, '演示用户一', '13800138001', '上海市 上海市 浦东新区 张江高科技园区 100 号', '已完成测试订单', 'ALIPAY', DATE_SUB(NOW(), INTERVAL 2 DAY), DATE_SUB(NOW(), INTERVAL 2 DAY), DATE_SUB(NOW(), INTERVAL 1 DAY), DATE_SUB(NOW(), INTERVAL 2 DAY), DATE_SUB(NOW(), INTERVAL 1 DAY)),
('ORD202603110002', NULL, (SELECT id FROM users WHERE username = 'demo1'), 4, NULL, 1, 1899.00, 2, 1, '演示用户一', '13800138001', '上海市 上海市 浦东新区 张江高科技园区 100 号', '待发货测试订单', 'WECHAT', DATE_SUB(NOW(), INTERVAL 1 DAY), NULL, NULL, DATE_SUB(NOW(), INTERVAL 1 DAY), DATE_SUB(NOW(), INTERVAL 1 DAY)),
('ORD202603110003', NULL, (SELECT id FROM users WHERE username = 'demo2'), 10, NULL, 1, 168.00, 3, 1, '演示用户二', '13800138002', '浙江省 杭州市 西湖区 文三路 88 号', '已发货测试订单', 'ONLINE', DATE_SUB(NOW(), INTERVAL 4 HOUR), DATE_SUB(NOW(), INTERVAL 2 HOUR), NULL, DATE_SUB(NOW(), INTERVAL 6 HOUR), DATE_SUB(NOW(), INTERVAL 2 HOUR)),
('ORD202603110004', NULL, (SELECT id FROM users WHERE username = 'demo2'), 4, 2, 1, 1299.00, 1, 2, '演示用户二', '13800138002', '浙江省 杭州市 西湖区 文三路 88 号', '秒杀待支付订单', NULL, NULL, NULL, NULL, DATE_SUB(NOW(), INTERVAL 1 HOUR), DATE_SUB(NOW(), INTERVAL 1 HOUR)),
('ORD202603110005', NULL, (SELECT id FROM users WHERE username = 'testuser1'), 1, NULL, 2, 11798.00, 2, 1, '测试用户一', '13800138003', '广东省 深圳市 南山区 科技园科苑路 18 号', '多商品主订单', 'ONLINE', DATE_SUB(NOW(), INTERVAL 5 HOUR), NULL, NULL, DATE_SUB(NOW(), INTERVAL 5 HOUR), DATE_SUB(NOW(), INTERVAL 5 HOUR));
-- ================================
-- 6. 订单明细
-- ================================
INSERT INTO order_items (order_id, product_id, product_name, product_image_url, price, quantity, subtotal, created_at)
SELECT o.id, 9, '深入理解Java虚拟机', '/images/default-product.svg', 89.00, 1, 89.00, o.created_at FROM orders o WHERE o.order_no = 'ORD202603110001'
UNION ALL
SELECT o.id, 4, 'AirPods Pro 2', '/images/default-product.svg', 1899.00, 1, 1899.00, o.created_at FROM orders o WHERE o.order_no = 'ORD202603110002'
UNION ALL
SELECT o.id, 10, '五常大米 10kg', '/images/default-product.svg', 168.00, 1, 168.00, o.created_at FROM orders o WHERE o.order_no = 'ORD202603110003'
UNION ALL
SELECT o.id, 4, 'AirPods Pro 2', '/images/default-product.svg', 1299.00, 1, 1299.00, o.created_at FROM orders o WHERE o.order_no = 'ORD202603110004'
UNION ALL
SELECT o.id, 1, 'iPhone 15 Pro Max', '/images/iphone15.svg', 9999.00, 1, 9999.00, o.created_at FROM orders o WHERE o.order_no = 'ORD202603110005'
UNION ALL
SELECT o.id, 9, '深入理解Java虚拟机', '/images/default-product.svg', 89.00, 2, 178.00, o.created_at FROM orders o WHERE o.order_no = 'ORD202603110005'
UNION ALL
SELECT o.id, 10, '五常大米 10kg', '/images/default-product.svg', 168.00, 1, 168.00, o.created_at FROM orders o WHERE o.order_no = 'ORD202603110005'
UNION ALL
SELECT o.id, 4, 'AirPods Pro 2', '/images/default-product.svg', 1899.00, 1, 1899.00, o.created_at FROM orders o WHERE o.order_no = 'ORD202603110005';
-- ================================
-- 7. 评价
-- ================================
INSERT INTO product_reviews (product_id, user_id, order_id, rating, content, status, admin_reply, replied_at, created_at, updated_at)
VALUES
(9, (SELECT id FROM users WHERE username = 'demo1'), (SELECT id FROM orders WHERE order_no = 'ORD202603110001'), 5, '内容很扎实,适合深入学习 JVM。', 1, '感谢支持,后续会持续补充相关图书。', NOW(), DATE_SUB(NOW(), INTERVAL 1 DAY), NOW()),
(4, (SELECT id FROM users WHERE username = 'demo1'), (SELECT id FROM orders WHERE order_no = 'ORD202603110002'), 4, '耳机效果不错,降噪很明显。', 1, NULL, NULL, DATE_SUB(NOW(), INTERVAL 12 HOUR), DATE_SUB(NOW(), INTERVAL 12 HOUR));
-- ================================
-- 8. 收藏
-- ================================
INSERT INTO user_favorites (user_id, product_id, created_at)
VALUES
((SELECT id FROM users WHERE username = 'demo1'), 1, NOW()),
((SELECT id FROM users WHERE username = 'demo1'), 4, NOW()),
((SELECT id FROM users WHERE username = 'demo2'), 2, NOW()),
((SELECT id FROM users WHERE username = 'testuser1'), 9, NOW());