-- ============================================= -- 旅游宣传管理系统 - 数据库建表SQL -- 数据库名称: tourism_platform -- 字符集: utf8mb4 -- 排序规则: utf8mb4_unicode_ci -- ============================================= DROP DATABASE IF EXISTS tourism_platform; CREATE DATABASE tourism_platform DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE tourism_platform; -- ============================================= -- 1. 用户相关表 -- ============================================= -- 用户表 CREATE TABLE `user` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `username` VARCHAR(50) NOT NULL COMMENT '用户名', `password` VARCHAR(255) NOT NULL COMMENT '密码', `phone` VARCHAR(20) DEFAULT NULL COMMENT '手机号', `email` VARCHAR(100) DEFAULT NULL COMMENT '邮箱', `avatar` VARCHAR(500) DEFAULT NULL COMMENT '头像URL', `nickname` VARCHAR(50) DEFAULT NULL COMMENT '昵称', `gender` TINYINT DEFAULT 0 COMMENT '性别:0-未知,1-男,2-女', `birthday` DATE DEFAULT NULL COMMENT '生日', `signature` VARCHAR(255) DEFAULT NULL COMMENT '个人签名', `status` TINYINT DEFAULT 1 COMMENT '状态:0-禁用,1-正常', `last_login_time` DATETIME DEFAULT NULL COMMENT '最后登录时间', `last_login_ip` VARCHAR(50) DEFAULT NULL COMMENT '最后登录IP', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除:0-未删除,1-已删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_username` (`username`), UNIQUE KEY `uk_phone` (`phone`), UNIQUE KEY `uk_email` (`email`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表'; -- 收货地址表 CREATE TABLE `address` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `user_id` BIGINT NOT NULL COMMENT '用户ID', `consignee` VARCHAR(50) NOT NULL COMMENT '收货人姓名', `phone` VARCHAR(20) NOT NULL COMMENT '联系电话', `province` VARCHAR(50) NOT NULL COMMENT '省份', `city` VARCHAR(50) NOT NULL COMMENT '城市', `district` VARCHAR(50) NOT NULL COMMENT '区县', `detail_address` VARCHAR(255) NOT NULL COMMENT '详细地址', `postal_code` VARCHAR(20) DEFAULT NULL COMMENT '邮政编码', `is_default` TINYINT DEFAULT 0 COMMENT '是否默认:0-否,1-是', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除', PRIMARY KEY (`id`), KEY `idx_user_id` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='收货地址表'; -- 收藏表 CREATE TABLE `favorite` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `user_id` BIGINT NOT NULL COMMENT '用户ID', `favorite_type` TINYINT NOT NULL COMMENT '类型:1-景点,2-商品,3-游记', `favorite_id` BIGINT NOT NULL COMMENT '收藏对象ID', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_user_id` (`user_id`), KEY `idx_user_type` (`user_id`, `favorite_type`, `favorite_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='收藏表'; -- ============================================= -- 2. 管理员相关表 -- ============================================= -- 管理员表 CREATE TABLE `admin` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `username` VARCHAR(50) NOT NULL COMMENT '用户名', `password` VARCHAR(255) NOT NULL COMMENT '密码', `name` VARCHAR(50) DEFAULT NULL COMMENT '姓名', `phone` VARCHAR(20) DEFAULT NULL COMMENT '手机号', `email` VARCHAR(100) DEFAULT NULL COMMENT '邮箱', `avatar` VARCHAR(500) DEFAULT NULL COMMENT '头像', `status` TINYINT DEFAULT 1 COMMENT '状态:0-禁用,1-正常', `last_login_time` DATETIME DEFAULT NULL COMMENT '最后登录时间', `last_login_ip` VARCHAR(50) DEFAULT NULL COMMENT '最后登录IP', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除', PRIMARY KEY (`id`), UNIQUE KEY `uk_username` (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='管理员表'; -- 角色表 CREATE TABLE `role` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `name` VARCHAR(50) NOT NULL COMMENT '角色名称', `code` VARCHAR(50) NOT NULL COMMENT '角色代码', `description` VARCHAR(255) DEFAULT NULL COMMENT '角色描述', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_name` (`name`), UNIQUE KEY `uk_code` (`code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色表'; -- 管理员角色关联表 CREATE TABLE `admin_role` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `admin_id` BIGINT NOT NULL COMMENT '管理员ID', `role_id` BIGINT NOT NULL COMMENT '角色ID', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_admin_id` (`admin_id`), KEY `idx_role_id` (`role_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='管理员角色关联表'; -- 权限表 CREATE TABLE `permission` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `name` VARCHAR(100) NOT NULL COMMENT '权限名称', `code` VARCHAR(100) NOT NULL COMMENT '权限代码', `type` TINYINT NOT NULL COMMENT '类型:1-菜单,2-按钮', `parent_id` BIGINT DEFAULT 0 COMMENT '父级ID', `path` VARCHAR(255) DEFAULT NULL COMMENT '路由路径', `icon` VARCHAR(100) DEFAULT NULL COMMENT '图标', `sort` INT DEFAULT 0 COMMENT '排序', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_code` (`code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='权限表'; -- 角色权限关联表 CREATE TABLE `role_permission` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `role_id` BIGINT NOT NULL COMMENT '角色ID', `permission_id` BIGINT NOT NULL COMMENT '权限ID', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_role_id` (`role_id`), KEY `idx_permission_id` (`permission_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色权限关联表'; -- 操作日志表 CREATE TABLE `operation_log` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `admin_id` BIGINT DEFAULT NULL COMMENT '管理员ID', `admin_name` VARCHAR(50) DEFAULT NULL COMMENT '管理员名称', `operation` VARCHAR(255) DEFAULT NULL COMMENT '操作描述', `method` VARCHAR(255) DEFAULT NULL COMMENT '请求方法', `params` TEXT DEFAULT NULL COMMENT '请求参数', `ip` VARCHAR(50) DEFAULT NULL COMMENT 'IP地址', `result` TEXT DEFAULT NULL COMMENT '返回结果', `status` TINYINT DEFAULT NULL COMMENT '状态:0-失败,1-成功', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间', PRIMARY KEY (`id`), KEY `idx_admin_id` (`admin_id`), KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作日志表'; -- ============================================= -- 3. 景点相关表 -- ============================================= -- 景点分类表 CREATE TABLE `attraction_category` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `name` VARCHAR(50) NOT NULL COMMENT '分类名称', `parent_id` BIGINT DEFAULT 0 COMMENT '父级ID', `level` TINYINT DEFAULT 1 COMMENT '层级', `sort` INT DEFAULT 0 COMMENT '排序', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='景点分类表'; -- 景点表 CREATE TABLE `attraction` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `name` VARCHAR(100) NOT NULL COMMENT '景点名称', `category_id` BIGINT DEFAULT NULL COMMENT '分类ID', `city` VARCHAR(50) NOT NULL COMMENT '所在城市', `address` VARCHAR(255) NOT NULL COMMENT '详细地址', `latitude` DECIMAL(10,6) DEFAULT NULL COMMENT '纬度', `longitude` DECIMAL(10,6) DEFAULT NULL COMMENT '经度', `cover_image` VARCHAR(500) DEFAULT NULL COMMENT '封面图片', `images` TEXT DEFAULT NULL COMMENT '图片列表(JSON数组)', `video_url` VARCHAR(500) DEFAULT NULL COMMENT '宣传视频', `description` TEXT DEFAULT NULL COMMENT '景点介绍', `open_time` VARCHAR(100) DEFAULT NULL COMMENT '开放时间', `play_time` VARCHAR(100) DEFAULT NULL COMMENT '建议游玩时长', `traffic_info` TEXT DEFAULT NULL COMMENT '交通信息', `tags` VARCHAR(255) DEFAULT NULL COMMENT '标签', `is_hot` TINYINT DEFAULT 0 COMMENT '是否热门:0-否,1-是', `is_recommend` TINYINT DEFAULT 0 COMMENT '是否推荐:0-否,1-是', `status` TINYINT DEFAULT 1 COMMENT '状态:0-下架,1-上架', `view_count` INT DEFAULT 0 COMMENT '浏览次数', `favorite_count` INT DEFAULT 0 COMMENT '收藏次数', `score` DECIMAL(3,2) DEFAULT 5.00 COMMENT '评分', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除', PRIMARY KEY (`id`), KEY `idx_category_id` (`category_id`), KEY `idx_city` (`city`), KEY `idx_is_hot` (`is_hot`), KEY `idx_is_recommend` (`is_recommend`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='景点表'; -- 门票表 CREATE TABLE `ticket` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `attraction_id` BIGINT NOT NULL COMMENT '景点ID', `name` VARCHAR(100) NOT NULL COMMENT '票种名称', `type` TINYINT NOT NULL COMMENT '类型:1-成人票,2-儿童票,3-老人票,4-学生票', `price` DECIMAL(10,2) NOT NULL COMMENT '价格', `original_price` DECIMAL(10,2) DEFAULT NULL COMMENT '原价', `stock` INT DEFAULT 0 COMMENT '库存', `daily_limit` INT DEFAULT 0 COMMENT '每日限购', `valid_days` INT DEFAULT 1 COMMENT '有效天数', `refundable` TINYINT DEFAULT 1 COMMENT '是否可退:0-否,1-是', `description` VARCHAR(255) DEFAULT NULL COMMENT '说明', `sort` INT DEFAULT 0 COMMENT '排序', `status` TINYINT DEFAULT 1 COMMENT '状态:0-下架,1-上架', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除', PRIMARY KEY (`id`), KEY `idx_attraction_id` (`attraction_id`), KEY `idx_type` (`type`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='门票表'; -- 景点订单表 CREATE TABLE `attraction_order` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `order_no` VARCHAR(32) NOT NULL COMMENT '订单编号', `user_id` BIGINT NOT NULL COMMENT '用户ID', `attraction_id` BIGINT NOT NULL COMMENT '景点ID', `ticket_id` BIGINT NOT NULL COMMENT '门票ID', `attraction_name` VARCHAR(100) DEFAULT NULL COMMENT '景点名称', `ticket_name` VARCHAR(100) DEFAULT NULL COMMENT '票种名称', `quantity` INT NOT NULL COMMENT '数量', `unit_price` DECIMAL(10,2) NOT NULL COMMENT '单价', `total_price` DECIMAL(10,2) NOT NULL COMMENT '总价', `visit_date` DATE NOT NULL COMMENT '游玩日期', `visit_time` VARCHAR(50) DEFAULT NULL COMMENT '游玩时段', `contact_name` VARCHAR(50) NOT NULL COMMENT '联系人姓名', `contact_phone` VARCHAR(20) NOT NULL COMMENT '联系人电话', `status` TINYINT DEFAULT 1 COMMENT '状态:1-待支付,2-已支付,3-已使用,4-已取消,5-退款中,6-已退款', `pay_time` DATETIME DEFAULT NULL COMMENT '支付时间', `use_time` DATETIME DEFAULT NULL COMMENT '使用时间', `cancel_time` DATETIME DEFAULT NULL COMMENT '取消时间', `cancel_reason` VARCHAR(255) DEFAULT NULL COMMENT '取消原因', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_order_no` (`order_no`), KEY `idx_user_id` (`user_id`), KEY `idx_attraction_id` (`attraction_id`), KEY `idx_status` (`status`), KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='景点订单表'; -- ============================================= -- 4. 商品相关表 -- ============================================= -- 商品分类表 CREATE TABLE `product_category` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `name` VARCHAR(50) NOT NULL COMMENT '分类名称', `parent_id` BIGINT DEFAULT 0 COMMENT '父级ID', `level` TINYINT DEFAULT 1 COMMENT '层级', `icon` VARCHAR(255) DEFAULT NULL COMMENT '图标', `sort` INT DEFAULT 0 COMMENT '排序', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商品分类表'; -- 商品表 CREATE TABLE `product` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `name` VARCHAR(200) NOT NULL COMMENT '商品名称', `category_id` BIGINT DEFAULT NULL COMMENT '分类ID', `cover_image` VARCHAR(500) DEFAULT NULL COMMENT '封面图片', `images` TEXT DEFAULT NULL COMMENT '图片列表(JSON数组)', `video_url` VARCHAR(500) DEFAULT NULL COMMENT '商品视频', `description` TEXT DEFAULT NULL COMMENT '商品描述', `detail` TEXT DEFAULT NULL COMMENT '商品详情(富文本)', `tags` VARCHAR(255) DEFAULT NULL COMMENT '标签', `is_hot` TINYINT DEFAULT 0 COMMENT '是否热销', `is_new` TINYINT DEFAULT 0 COMMENT '是否新品', `is_recommend` TINYINT DEFAULT 0 COMMENT '是否推荐', `status` TINYINT DEFAULT 1 COMMENT '状态:0-下架,1-上架', `view_count` INT DEFAULT 0 COMMENT '浏览次数', `sale_count` INT DEFAULT 0 COMMENT '销量', `favorite_count` INT DEFAULT 0 COMMENT '收藏次数', `score` DECIMAL(3,2) DEFAULT 5.00 COMMENT '评分', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除', PRIMARY KEY (`id`), KEY `idx_category_id` (`category_id`), KEY `idx_is_hot` (`is_hot`), KEY `idx_is_new` (`is_new`), KEY `idx_is_recommend` (`is_recommend`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商品表'; -- 商品规格表 CREATE TABLE `sku` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `product_id` BIGINT NOT NULL COMMENT '商品ID', `name` VARCHAR(100) NOT NULL COMMENT '规格名称(如:颜色、尺寸)', `value` VARCHAR(255) NOT NULL COMMENT '规格值(如:红色、L)', `price` DECIMAL(10,2) NOT NULL COMMENT '价格', `stock` INT DEFAULT 0 COMMENT '库存', `image` VARCHAR(500) DEFAULT NULL COMMENT '规格图片', `sort` INT DEFAULT 0 COMMENT '排序', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除', PRIMARY KEY (`id`), KEY `idx_product_id` (`product_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商品规格表'; -- 购物车表 CREATE TABLE `cart` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `user_id` BIGINT NOT NULL COMMENT '用户ID', `product_id` BIGINT NOT NULL COMMENT '商品ID', `sku_id` BIGINT DEFAULT NULL COMMENT '规格ID', `quantity` INT NOT NULL COMMENT '数量', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除', PRIMARY KEY (`id`), KEY `idx_user_id` (`user_id`), KEY `idx_product_id` (`product_id`), KEY `idx_user_product` (`user_id`, `product_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='购物车表'; -- 商品订单表 CREATE TABLE `product_order` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `order_no` VARCHAR(32) NOT NULL COMMENT '订单编号', `user_id` BIGINT NOT NULL COMMENT '用户ID', `total_quantity` INT NOT NULL COMMENT '商品总数量', `total_price` DECIMAL(10,2) NOT NULL COMMENT '订单总金额', `discount_amount` DECIMAL(10,2) DEFAULT 0.00 COMMENT '优惠金额', `actual_amount` DECIMAL(10,2) NOT NULL COMMENT '实付金额', `freight_amount` DECIMAL(10,2) DEFAULT 0.00 COMMENT '运费', `address_id` BIGINT DEFAULT NULL COMMENT '收货地址ID', `consignee` VARCHAR(50) DEFAULT NULL COMMENT '收货人', `phone` VARCHAR(20) DEFAULT NULL COMMENT '联系电话', `province` VARCHAR(50) DEFAULT NULL COMMENT '省份', `city` VARCHAR(50) DEFAULT NULL COMMENT '城市', `district` VARCHAR(50) DEFAULT NULL COMMENT '区县', `detail_address` VARCHAR(255) DEFAULT NULL COMMENT '详细地址', `order_type` TINYINT DEFAULT 1 COMMENT '订单类型:1-普通订单', `status` TINYINT DEFAULT 1 COMMENT '状态:1-待支付,2-已支付,3-待发货,4-已发货,5-待收货,6-已完成,7-已取消,8-退款中,9-已退款', `pay_time` DATETIME DEFAULT NULL COMMENT '支付时间', `delivery_time` DATETIME DEFAULT NULL COMMENT '发货时间', `receive_time` DATETIME DEFAULT NULL COMMENT '收货时间', `cancel_time` DATETIME DEFAULT NULL COMMENT '取消时间', `cancel_reason` VARCHAR(255) DEFAULT NULL COMMENT '取消原因', `remark` VARCHAR(500) DEFAULT NULL COMMENT '订单备注', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_order_no` (`order_no`), KEY `idx_user_id` (`user_id`), KEY `idx_status` (`status`), KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商品订单表'; -- 订单商品表 CREATE TABLE `order_item` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `order_id` BIGINT NOT NULL COMMENT '订单ID', `order_no` VARCHAR(32) NOT NULL COMMENT '订单编号', `product_id` BIGINT NOT NULL COMMENT '商品ID', `product_name` VARCHAR(200) NOT NULL COMMENT '商品名称', `sku_id` BIGINT DEFAULT NULL COMMENT '规格ID', `sku_name` VARCHAR(255) DEFAULT NULL COMMENT '规格名称', `cover_image` VARCHAR(500) DEFAULT NULL COMMENT '商品图片', `unit_price` DECIMAL(10,2) NOT NULL COMMENT '单价', `quantity` INT NOT NULL COMMENT '数量', `total_price` DECIMAL(10,2) NOT NULL COMMENT '小计', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_order_id` (`order_id`), KEY `idx_order_no` (`order_no`), KEY `idx_product_id` (`product_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单商品表'; -- 物流表 CREATE TABLE `logistics` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `order_id` BIGINT NOT NULL COMMENT '订单ID', `order_no` VARCHAR(32) NOT NULL COMMENT '订单编号', `logistics_company` VARCHAR(50) DEFAULT NULL COMMENT '物流公司', `tracking_no` VARCHAR(100) DEFAULT NULL COMMENT '物流单号', `current_status` VARCHAR(100) DEFAULT NULL COMMENT '当前状态', `traces` TEXT DEFAULT NULL COMMENT '物流轨迹(JSON)', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_order_id` (`order_id`), KEY `idx_order_no` (`order_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物流表'; -- ============================================= -- 5. 游记相关表 -- ============================================= -- 游记表 CREATE TABLE `travel_note` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `user_id` BIGINT NOT NULL COMMENT '用户ID', `user_nickname` VARCHAR(50) DEFAULT NULL COMMENT '用户昵称', `user_avatar` VARCHAR(500) DEFAULT NULL COMMENT '用户头像', `attraction_id` BIGINT DEFAULT NULL COMMENT '关联景点ID', `attraction_name` VARCHAR(100) DEFAULT NULL COMMENT '景点名称', `title` VARCHAR(200) NOT NULL COMMENT '游记标题', `cover_image` VARCHAR(500) DEFAULT NULL COMMENT '封面图片', `content` TEXT NOT NULL COMMENT '游记内容(富文本)', `images` TEXT DEFAULT NULL COMMENT '图片列表(JSON数组)', `video_url` VARCHAR(500) DEFAULT NULL COMMENT '视频URL', `tags` VARCHAR(255) DEFAULT NULL COMMENT '标签', `view_count` INT DEFAULT 0 COMMENT '浏览次数', `like_count` INT DEFAULT 0 COMMENT '点赞次数', `comment_count` INT DEFAULT 0 COMMENT '评论次数', `favorite_count` INT DEFAULT 0 COMMENT '收藏次数', `status` TINYINT DEFAULT 0 COMMENT '状态:0-待审核,1-已发布,2-已下架', `reject_reason` VARCHAR(255) DEFAULT NULL COMMENT '审核拒绝原因', `publish_time` DATETIME DEFAULT NULL COMMENT '发布时间', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除', PRIMARY KEY (`id`), KEY `idx_user_id` (`user_id`), KEY `idx_attraction_id` (`attraction_id`), KEY `idx_status` (`status`), KEY `idx_publish_time` (`publish_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='游记表'; -- 评论表 CREATE TABLE `comment` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `user_id` BIGINT NOT NULL COMMENT '用户ID', `user_nickname` VARCHAR(50) DEFAULT NULL COMMENT '用户昵称', `user_avatar` VARCHAR(500) DEFAULT NULL COMMENT '用户头像', `target_type` TINYINT NOT NULL COMMENT '目标类型:1-景点,2-商品,3-游记', `target_id` BIGINT NOT NULL COMMENT '目标ID', `parent_id` BIGINT DEFAULT 0 COMMENT '父评论ID', `content` TEXT NOT NULL COMMENT '评论内容', `images` TEXT DEFAULT NULL COMMENT '评论图片', `like_count` INT DEFAULT 0 COMMENT '点赞次数', `reply_count` INT DEFAULT 0 COMMENT '回复次数', `status` TINYINT DEFAULT 1 COMMENT '状态:0-隐藏,1-显示', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除', PRIMARY KEY (`id`), KEY `idx_user_id` (`user_id`), KEY `idx_target` (`target_type`, `target_id`), KEY `idx_parent_id` (`parent_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='评论表'; -- 点赞表 CREATE TABLE `like` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `user_id` BIGINT NOT NULL COMMENT '用户ID', `target_type` TINYINT NOT NULL COMMENT '目标类型:1-景点,2-商品,3-游记,4-评论', `target_id` BIGINT NOT NULL COMMENT '目标ID', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_user_id` (`user_id`), KEY `idx_target` (`user_id`, `target_type`, `target_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='点赞表'; -- ============================================= -- 6. 内容管理表 -- ============================================= -- 轮播图表 CREATE TABLE `banner` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `title` VARCHAR(100) NOT NULL COMMENT '标题', `image_url` VARCHAR(500) NOT NULL COMMENT '图片地址', `link_type` TINYINT DEFAULT 1 COMMENT '链接类型:1-无链接,2-景点,3-商品,4-游记,5-外部链接', `link_id` BIGINT DEFAULT NULL COMMENT '链接ID', `link_url` VARCHAR(500) DEFAULT NULL COMMENT '外部链接URL', `sort` INT DEFAULT 0 COMMENT '排序', `status` TINYINT DEFAULT 1 COMMENT '状态:0-禁用,1-启用', `start_time` DATETIME DEFAULT NULL COMMENT '开始时间', `end_time` DATETIME DEFAULT NULL COMMENT '结束时间', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_status` (`status`), KEY `idx_sort` (`sort`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='轮播图表'; -- 公告表 CREATE TABLE `announcement` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `title` VARCHAR(200) NOT NULL COMMENT '标题', `content` TEXT NOT NULL COMMENT '内容', `type` TINYINT DEFAULT 1 COMMENT '类型:1-系统公告,2-活动通知', `cover_image` VARCHAR(500) DEFAULT NULL COMMENT '封面图片', `status` TINYINT DEFAULT 1 COMMENT '状态:0-下架,1-上架', `sort` INT DEFAULT 0 COMMENT '排序', `publish_time` DATETIME DEFAULT NULL COMMENT '发布时间', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `idx_status` (`status`), KEY `idx_publish_time` (`publish_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='公告表'; -- ============================================= -- 7. 支付相关表 -- ============================================= -- 支付记录表 CREATE TABLE `payment` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `payment_no` VARCHAR(64) NOT NULL COMMENT '支付单号', `order_type` TINYINT NOT NULL COMMENT '订单类型:1-景点订单,2-商品订单', `order_id` BIGINT NOT NULL COMMENT '订单ID', `order_no` VARCHAR(32) NOT NULL COMMENT '订单编号', `user_id` BIGINT NOT NULL COMMENT '用户ID', `amount` DECIMAL(10,2) NOT NULL COMMENT '支付金额', `payment_method` TINYINT NOT NULL COMMENT '支付方式:1-支付宝沙箱', `payment_status` TINYINT DEFAULT 0 COMMENT '支付状态:0-待支付,1-支付中,2-已支付,3-支付失败,4-已退款', `transaction_id` VARCHAR(64) DEFAULT NULL COMMENT '第三方交易单号', `pay_time` DATETIME DEFAULT NULL COMMENT '支付时间', `callback_time` DATETIME DEFAULT NULL COMMENT '回调时间', `callback_content` TEXT DEFAULT NULL COMMENT '回调内容', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_payment_no` (`payment_no`), KEY `idx_order_type` (`order_type`), KEY `idx_order_id` (`order_id`), KEY `idx_user_id` (`user_id`), KEY `idx_payment_status` (`payment_status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='支付记录表'; -- 退款记录表 CREATE TABLE `refund` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `refund_no` VARCHAR(64) NOT NULL COMMENT '退款单号', `payment_id` BIGINT NOT NULL COMMENT '支付记录ID', `order_type` TINYINT NOT NULL COMMENT '订单类型:1-景点订单,2-商品订单', `order_id` BIGINT NOT NULL COMMENT '订单ID', `order_no` VARCHAR(32) NOT NULL COMMENT '订单编号', `user_id` BIGINT NOT NULL COMMENT '用户ID', `refund_amount` DECIMAL(10,2) NOT NULL COMMENT '退款金额', `refund_reason` VARCHAR(255) DEFAULT NULL COMMENT '退款原因', `refund_status` TINYINT DEFAULT 0 COMMENT '退款状态:0-待审核,1-审核通过,2-退款中,3-已退款,4-审核拒绝', `reject_reason` VARCHAR(255) DEFAULT NULL COMMENT '拒绝原因', `process_time` DATETIME DEFAULT NULL COMMENT '处理时间', `complete_time` DATETIME DEFAULT NULL COMMENT '完成时间', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_refund_no` (`refund_no`), KEY `idx_payment_id` (`payment_id`), KEY `idx_order_id` (`order_id`), KEY `idx_user_id` (`user_id`), KEY `idx_refund_status` (`refund_status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='退款记录表'; -- ============================================= -- 8. 统计数据表 -- ============================================= -- 每日统计表 CREATE TABLE `daily_statistics` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键', `stat_date` DATE NOT NULL COMMENT '统计日期', `new_user_count` INT DEFAULT 0 COMMENT '新增用户数', `active_user_count` INT DEFAULT 0 COMMENT '活跃用户数', `page_view` INT DEFAULT 0 COMMENT '页面浏览量', `attraction_order_count` INT DEFAULT 0 COMMENT '景点订单数', `attraction_gmv` DECIMAL(12,2) DEFAULT 0.00 COMMENT '景点订单金额', `product_order_count` INT DEFAULT 0 COMMENT '商品订单数', `product_gmv` DECIMAL(12,2) DEFAULT 0.00 COMMENT '商品订单金额', `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_stat_date` (`stat_date`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='每日统计表'; -- ============================================= -- 初始化数据 -- ============================================= -- 插入超级管理员 INSERT INTO `admin` (`username`, `password`, `name`, `status`, `create_time`) VALUES ('admin', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE/TU.Cfu6.fUy', '系统管理员', 1, NOW()); -- 插入角色数据 INSERT INTO `role` (`name`, `code`, `description`) VALUES ('超级管理员', 'SUPER_ADMIN', '拥有所有权限'), ('内容管理员', 'CONTENT_ADMIN', '负责内容管理'), ('订单管理员', 'ORDER_ADMIN', '负责订单管理'); -- 关联超级管理员和角色 INSERT INTO `admin_role` (`admin_id`, `role_id`) VALUES (1, 1); -- 插入景点分类 INSERT INTO `attraction_category` (`name`, `parent_id`, `level`, `sort`) VALUES ('自然风光', 0, 1, 1), ('人文历史', 0, 1, 2), ('主题公园', 0, 1, 3), ('博物馆', 0, 1, 4), ('海滨度假', 0, 1, 5); -- 插入商品分类 INSERT INTO `product_category` (`name`, `parent_id`, `level`, `sort`) VALUES ('地方特产', 0, 1, 1), ('工艺纪念品', 0, 1, 2), ('文创产品', 0, 1, 3), ('服饰箱包', 0, 1, 4); -- 插入轮播图 INSERT INTO `banner` (`title`, `image_url`, `link_type`, `sort`, `status`) VALUES ('热门景点推荐', '/uploads/banner1.jpg', 1, 1, 1), ('新品纪念品上架', '/uploads/banner2.jpg', 1, 2, 1); -- 插入公告 INSERT INTO `announcement` (`title`, `content`, `type`, `status`, `publish_time`) VALUES ('欢迎来到旅游宣传管理系统', '祝您使用愉快!', 1, 1, NOW());