CREATE DATABASE IF NOT EXISTS maternal_mall DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE maternal_mall; CREATE TABLE IF NOT EXISTS users ( id BIGINT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) UNIQUE NOT NULL, password VARCHAR(100) NOT NULL, role VARCHAR(20) NOT NULL, nickname VARCHAR(50), phone VARCHAR(20), address VARCHAR(255), token VARCHAR(100), enabled BIT NOT NULL DEFAULT b'1', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS product ( id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(120) NOT NULL, category VARCHAR(50), description VARCHAR(1000), price DECIMAL(10,2) NOT NULL, stock INT NOT NULL, image_url VARCHAR(255), merchant_id BIGINT NOT NULL, approved BIT NOT NULL DEFAULT b'0', created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS cart_item ( id BIGINT PRIMARY KEY AUTO_INCREMENT, customer_id BIGINT NOT NULL, product_id BIGINT NOT NULL, quantity INT NOT NULL, UNIQUE KEY uk_customer_product(customer_id, product_id) ); CREATE TABLE IF NOT EXISTS favorite ( id BIGINT PRIMARY KEY AUTO_INCREMENT, customer_id BIGINT NOT NULL, product_id BIGINT NOT NULL, UNIQUE KEY uk_f_customer_product(customer_id, product_id) ); CREATE TABLE IF NOT EXISTS orders ( id BIGINT PRIMARY KEY AUTO_INCREMENT, order_no VARCHAR(50) UNIQUE NOT NULL, customer_id BIGINT NOT NULL, merchant_id BIGINT NOT NULL, total_amount DECIMAL(10,2) NOT NULL, status VARCHAR(30) NOT NULL, address VARCHAR(255), logistics_info VARCHAR(255), refund_reason VARCHAR(255), created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS order_item ( id BIGINT PRIMARY KEY AUTO_INCREMENT, order_id BIGINT NOT NULL, product_id BIGINT NOT NULL, product_name VARCHAR(120) NOT NULL, quantity INT NOT NULL, unit_price DECIMAL(10,2) NOT NULL ); CREATE TABLE IF NOT EXISTS review ( id BIGINT PRIMARY KEY AUTO_INCREMENT, order_id BIGINT NOT NULL, product_id BIGINT NOT NULL, customer_id BIGINT NOT NULL, rating INT NOT NULL, content VARCHAR(1000), created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS logistics_record ( id BIGINT PRIMARY KEY AUTO_INCREMENT, order_id BIGINT NOT NULL, merchant_id BIGINT NOT NULL, status VARCHAR(255) NOT NULL, note VARCHAR(255), created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS inventory_record ( id BIGINT PRIMARY KEY AUTO_INCREMENT, product_id BIGINT NOT NULL, merchant_id BIGINT NOT NULL, change_qty INT NOT NULL, note VARCHAR(255), created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS merchant_application ( id BIGINT PRIMARY KEY AUTO_INCREMENT, user_id BIGINT NOT NULL, qualification VARCHAR(255), status VARCHAR(30) NOT NULL, remark VARCHAR(255), created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS banner ( id BIGINT PRIMARY KEY AUTO_INCREMENT, image_url VARCHAR(255) NOT NULL, link_url VARCHAR(255), sort_no INT NOT NULL DEFAULT 0, enabled BIT NOT NULL DEFAULT b'1' ); INSERT INTO users(username,password,role,nickname,enabled) SELECT 'admin','123456','ADMIN','平台管理员',b'1' FROM dual WHERE NOT EXISTS (SELECT 1 FROM users WHERE username='admin'); INSERT INTO users(username,password,role,nickname,enabled) SELECT 'merchant1','123456','MERCHANT','示例商家',b'1' FROM dual WHERE NOT EXISTS (SELECT 1 FROM users WHERE username='merchant1'); INSERT INTO users(username,password,role,nickname,enabled) SELECT 'customer1','123456','CUSTOMER','示例顾客',b'1' FROM dual WHERE NOT EXISTS (SELECT 1 FROM users WHERE username='customer1'); INSERT INTO product(name,category,description,price,stock,image_url,merchant_id,approved) SELECT '婴儿纸尿裤L码','尿裤湿巾','高吸收防漏,适合10-14kg','89.00',200,'https://picsum.photos/400/260?diaper', (SELECT id FROM users WHERE username='merchant1' LIMIT 1), b'1' FROM dual WHERE NOT EXISTS (SELECT 1 FROM product WHERE name='婴儿纸尿裤L码'); INSERT INTO product(name,category,description,price,stock,image_url,merchant_id,approved) SELECT '孕妇营养奶粉','奶粉辅食','富含叶酸和DHA','168.00',80,'https://picsum.photos/400/260?milk', (SELECT id FROM users WHERE username='merchant1' LIMIT 1), b'1' FROM dual WHERE NOT EXISTS (SELECT 1 FROM product WHERE name='孕妇营养奶粉'); INSERT INTO banner(image_url,link_url,sort_no,enabled) SELECT 'https://picsum.photos/1200/220?maternity1','#',1,b'1' FROM dual WHERE NOT EXISTS (SELECT 1 FROM banner WHERE sort_no=1); INSERT INTO banner(image_url,link_url,sort_no,enabled) SELECT 'https://picsum.photos/1200/220?maternity2','#',2,b'1' FROM dual WHERE NOT EXISTS (SELECT 1 FROM banner WHERE sort_no=2);