tourism-system/tourism_platform.sql

642 lines
32 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- =============================================
-- 旅游宣传管理系统 - 数据库建表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());