/* Navicat Premium Dump SQL Source Server : localhost_3306 Source Server Type : MySQL Source Server Version : 90200 (9.2.0) Source Host : localhost:3306 Source Schema : cg Target Server Type : MySQL Target Server Version : 90200 (9.2.0) File Encoding : 65001 Date: 18/06/2025 12:47:29 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for account -- ---------------------------- DROP TABLE IF EXISTS `account`; CREATE TABLE `account` ( `account_id` bigint NOT NULL AUTO_INCREMENT COMMENT '账户ID', `account_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '账户名称', `account_password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '账户密码', `account_phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手机号码', `account_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT 'customer' COMMENT '账户类型:admin/manager/customer', `account_img` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '头像图片URL', `account_gender` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '性别:male/female', `account_tag` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '账户标签', `salary` decimal(10, 2) NULL DEFAULT NULL COMMENT '薪资(员工用)', `is_deleted` tinyint(1) NULL DEFAULT 0 COMMENT '是否删除:0-未删除,1-已删除', `deleted_at` datetime NULL DEFAULT NULL COMMENT '删除时间', `created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`account_id`) USING BTREE, INDEX `idx_account_phone`(`account_phone` ASC) USING BTREE, INDEX `idx_account_type`(`account_type` ASC) USING BTREE, INDEX `idx_is_deleted`(`is_deleted` ASC) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '用户账户表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for branch -- ---------------------------- DROP TABLE IF EXISTS `branch`; CREATE TABLE `branch` ( `branch_id` bigint NOT NULL AUTO_INCREMENT COMMENT '分店ID', `branch_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '分店名称', `branch_address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '分店地址', `branch_phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '分店电话', `branch_start` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '营业开始时间,格式:HH:mm', `branch_end` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '营业结束时间,格式:HH:mm', `branch_status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT 'open' COMMENT '营业状态:open-营业中,closed-已停业', `branch_boss` bigint NULL DEFAULT NULL COMMENT '负责人ID,关联account表', `province` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '所属省份', `latitude` decimal(10, 8) NULL DEFAULT NULL COMMENT '纬度', `longitude` decimal(11, 8) NULL DEFAULT NULL COMMENT '经度', `is_deleted` tinyint(1) NULL DEFAULT 0 COMMENT '是否删除:0-未删除,1-已删除', `deleted_at` datetime NULL DEFAULT NULL COMMENT '删除时间', `created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`branch_id`) USING BTREE, INDEX `idx_branch_status`(`branch_status` ASC) USING BTREE, INDEX `idx_branch_boss`(`branch_boss` ASC) USING BTREE, INDEX `idx_province`(`province` ASC) USING BTREE, INDEX `idx_is_deleted`(`is_deleted` ASC) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '分店表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for comments -- ---------------------------- DROP TABLE IF EXISTS `comments`; CREATE TABLE `comments` ( `comment_id` bigint NOT NULL AUTO_INCREMENT COMMENT '评论ID', `comment_text` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '评论内容', `comment_dish_id` bigint NOT NULL COMMENT '评论的菜品ID', `comment_account_id` bigint NOT NULL COMMENT '评论用户ID', `comment_rating` int NULL DEFAULT 5 COMMENT '评分:1-5分', `parent_comment_id` bigint NULL DEFAULT NULL COMMENT '父评论ID,用于回复功能', `is_deleted` tinyint(1) NULL DEFAULT 0 COMMENT '是否删除:0-未删除,1-已删除', `deleted_at` datetime NULL DEFAULT NULL COMMENT '删除时间', `created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`comment_id`) USING BTREE, INDEX `idx_comment_dish_id`(`comment_dish_id` ASC) USING BTREE, INDEX `idx_comment_account_id`(`comment_account_id` ASC) USING BTREE, INDEX `idx_parent_comment_id`(`parent_comment_id` ASC) USING BTREE, INDEX `idx_comment_rating`(`comment_rating` ASC) USING BTREE, INDEX `idx_is_deleted`(`is_deleted` ASC) USING BTREE, INDEX `idx_created_at`(`created_at` ASC) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '评论表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for dishes -- ---------------------------- DROP TABLE IF EXISTS `dishes`; CREATE TABLE `dishes` ( `dish_id` bigint NOT NULL AUTO_INCREMENT COMMENT '菜品ID', `dish_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '菜品名称', `category` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '菜品分类', `price` decimal(10, 2) NOT NULL COMMENT '菜品价格', `stock` int NULL DEFAULT 0 COMMENT '库存数量', `status` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT 'available' COMMENT '菜品状态:available-可售,unavailable-停售', `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '菜品描述', `image_url` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '菜品图片URL', `sales` int NULL DEFAULT 0 COMMENT '累计销售数量', `tag` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '菜品标签', `is_deleted` tinyint(1) NULL DEFAULT 0 COMMENT '是否删除:0-未删除,1-已删除', `deleted_at` datetime NULL DEFAULT NULL COMMENT '删除时间', `created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`dish_id`) USING BTREE, INDEX `idx_category`(`category` ASC) USING BTREE, INDEX `idx_status`(`status` ASC) USING BTREE, INDEX `idx_is_deleted`(`is_deleted` ASC) USING BTREE, INDEX `idx_dish_name`(`dish_name` ASC) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '菜品表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for menu -- ---------------------------- DROP TABLE IF EXISTS `menu`; CREATE TABLE `menu` ( `menu_id` bigint NOT NULL AUTO_INCREMENT COMMENT '菜单ID', `branch_id` bigint NOT NULL COMMENT '分店ID', `dish_id` bigint NOT NULL COMMENT '菜品ID', `is_available` tinyint(1) NULL DEFAULT 1 COMMENT '该菜品在该分店是否可售', `branch_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '分店特定价格(如果为空则使用菜品表的价格)', `created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`menu_id`) USING BTREE, UNIQUE INDEX `uk_branch_dish`(`branch_id` ASC, `dish_id` ASC) USING BTREE, INDEX `idx_branch_id`(`branch_id` ASC) USING BTREE, INDEX `idx_dish_id`(`dish_id` ASC) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '菜单表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for order -- ---------------------------- DROP TABLE IF EXISTS `order`; CREATE TABLE `order` ( `order_id` bigint NOT NULL AUTO_INCREMENT COMMENT '订单ID', `account_id` bigint NOT NULL COMMENT '下单用户ID', `order_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '下单时间', `branch_id` bigint NOT NULL COMMENT '分店ID', `order_money` decimal(10, 2) NOT NULL COMMENT '订单总金额', `order_remarks` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '订单备注', `order_status` int NULL DEFAULT 1 COMMENT '订单状态:1-待处理,2-已完成,-1-已取消', `is_deleted` tinyint(1) NULL DEFAULT 0 COMMENT '是否删除:0-未删除,1-已删除', `deleted_at` datetime NULL DEFAULT NULL COMMENT '删除时间', `created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`order_id`) USING BTREE, INDEX `idx_account_id`(`account_id` ASC) USING BTREE, INDEX `idx_branch_id`(`branch_id` ASC) USING BTREE, INDEX `idx_order_status`(`order_status` ASC) USING BTREE, INDEX `idx_order_time`(`order_time` ASC) USING BTREE, INDEX `idx_is_deleted`(`is_deleted` ASC) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '订单表' ROW_FORMAT = Dynamic; -- ---------------------------- -- Table structure for order_list -- ---------------------------- DROP TABLE IF EXISTS `order_list`; CREATE TABLE `order_list` ( `order_list_id` bigint NOT NULL AUTO_INCREMENT COMMENT '订单明细ID', `order_id` bigint NOT NULL COMMENT '订单ID', `dish_id` bigint NOT NULL COMMENT '菜品ID', `number` int NOT NULL DEFAULT 1 COMMENT '数量', `created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`order_list_id`) USING BTREE, INDEX `idx_order_id`(`order_id` ASC) USING BTREE, INDEX `idx_dish_id`(`dish_id` ASC) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '订单明细表' ROW_FORMAT = Dynamic; -- ---------------------------- -- View structure for branch_order_stats -- ---------------------------- DROP VIEW IF EXISTS `branch_order_stats`; CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `branch_order_stats` AS select `b`.`branch_id` AS `branch_id`,`b`.`branch_name` AS `branch_name`,count(`o`.`order_id`) AS `total_orders`,coalesce(sum(`o`.`order_money`),0) AS `total_revenue`,cast(`o`.`order_time` as date) AS `order_date` from (`branch` `b` left join `order` `o` on(((`b`.`branch_id` = `o`.`branch_id`) and (`o`.`is_deleted` = false)))) where (`b`.`is_deleted` = false) group by `b`.`branch_id`,`b`.`branch_name`,cast(`o`.`order_time` as date); -- ---------------------------- -- View structure for dish_sales_view -- ---------------------------- DROP VIEW IF EXISTS `dish_sales_view`; CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `dish_sales_view` AS select `d`.`dish_id` AS `dish_id`,`d`.`dish_name` AS `dish_name`,`d`.`category` AS `category`,`d`.`price` AS `price`,coalesce(sum(`ol`.`number`),0) AS `total_sales`,count(distinct `o`.`order_id`) AS `order_count` from ((`dishes` `d` left join `order_list` `ol` on((`d`.`dish_id` = `ol`.`dish_id`))) left join `order` `o` on(((`ol`.`order_id` = `o`.`order_id`) and (`o`.`is_deleted` = false)))) where (`d`.`is_deleted` = false) group by `d`.`dish_id`,`d`.`dish_name`,`d`.`category`,`d`.`price`; SET FOREIGN_KEY_CHECKS = 1;