-- 创建数据库表结构 -- 作者: 王志维 -- 创建时间: 2026-01-20 -- 设置字符集 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- 1. 账户表 DROP TABLE IF EXISTS `account`; CREATE TABLE `account` ( `account_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_id` bigint(20) NOT NULL COMMENT '用户ID', `user_name` varchar(50) DEFAULT NULL COMMENT '用户名', `balance` decimal(10,2) DEFAULT '0.00' COMMENT '账户余额', `frozen_amount` decimal(10,2) DEFAULT '0.00' COMMENT '冻结金额', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_flag` tinyint(1) DEFAULT '0' COMMENT '是否删除 :0 未删除,1已删除', PRIMARY KEY (`account_id`), KEY `idx_user_id` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='账户表,记录用户的账户信息'; -- 2. 账户流水表 DROP TABLE IF EXISTS `account_transaction`; CREATE TABLE `account_transaction` ( `transaction_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_id` bigint(20) NOT NULL COMMENT '用户ID', `user_name` varchar(50) DEFAULT NULL COMMENT '用户名', `transaction_type` tinyint(1) NOT NULL COMMENT '交易类型:1.充值 2.提现 3.购买内容 4.退款 5.其他', `amount` decimal(10,2) NOT NULL COMMENT '交易金额', `before_balance` decimal(10,2) NOT NULL COMMENT '交易前余额', `after_balance` decimal(10,2) NOT NULL COMMENT '交易后余额', `status` tinyint(1) NOT NULL COMMENT '交易状态:1.成功 2.失败 3.处理中', `transaction_no` varchar(50) NOT NULL COMMENT '交易单号', `pay_type` tinyint(1) DEFAULT NULL COMMENT '支付方式:1.微信 2.支付宝 3.余额支付', `business_id` bigint(20) DEFAULT NULL COMMENT '关联业务ID', `business_type` varchar(50) DEFAULT NULL COMMENT '业务类型', `remark` varchar(255) DEFAULT NULL COMMENT '交易备注', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `create_by` varchar(50) DEFAULT NULL COMMENT '创建人', `update_by` varchar(50) DEFAULT NULL COMMENT '更新人', `delete_flag` tinyint(1) DEFAULT '0' COMMENT '是否删除 :0 未删除,1已删除', PRIMARY KEY (`transaction_id`), KEY `idx_user_id` (`user_id`), KEY `idx_transaction_no` (`transaction_no`), KEY `idx_business_id` (`business_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='账户流水表,记录用户的账户交易记录'; -- 3. 积分账户表 DROP TABLE IF EXISTS `points_account`; CREATE TABLE `points_account` ( `account_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_id` bigint(20) NOT NULL COMMENT '用户ID', `user_name` varchar(50) DEFAULT NULL COMMENT '用户名', `total_points` int(11) DEFAULT '0' COMMENT '总积分', `available_points` int(11) DEFAULT '0' COMMENT '可用积分', `frozen_points` int(11) DEFAULT '0' COMMENT '冻结积分', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_flag` tinyint(1) DEFAULT '0' COMMENT '是否删除 :0 未删除,1已删除', PRIMARY KEY (`account_id`), KEY `idx_user_id` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='积分账户表,记录用户的积分信息'; -- 4. 积分流水表 DROP TABLE IF EXISTS `points_transaction`; CREATE TABLE `points_transaction` ( `transaction_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_id` bigint(20) NOT NULL COMMENT '用户ID', `user_name` varchar(50) DEFAULT NULL COMMENT '用户名', `transaction_type` tinyint(1) NOT NULL COMMENT '积分变动类型:1.获取积分 2.消费积分 3.过期 4.其他', `points` int(11) NOT NULL COMMENT '变动积分', `before_points` int(11) NOT NULL COMMENT '变动前积分', `after_points` int(11) NOT NULL COMMENT '变动后积分', `status` tinyint(1) NOT NULL COMMENT '交易状态:1.成功 2.失败 3.处理中', `transaction_no` varchar(50) NOT NULL COMMENT '交易单号', `pay_type` tinyint(1) DEFAULT NULL COMMENT '支付方式:1.微信 2.支付宝 3.余额支付', `business_id` bigint(20) DEFAULT NULL COMMENT '关联业务ID', `business_type` varchar(50) DEFAULT NULL COMMENT '业务类型', `remark` varchar(255) DEFAULT NULL COMMENT '备注', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `create_by` varchar(50) DEFAULT NULL COMMENT '创建人', `update_by` varchar(50) DEFAULT NULL COMMENT '更新人', `delete_flag` tinyint(1) DEFAULT '0' COMMENT '是否删除 :0 未删除,1已删除', PRIMARY KEY (`transaction_id`), KEY `idx_user_id` (`user_id`), KEY `idx_transaction_no` (`transaction_no`), KEY `idx_business_id` (`business_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='积分流水表,记录用户的积分变动情况'; -- 5. 内容购买记录表 DROP TABLE IF EXISTS `content_purchase`; CREATE TABLE `content_purchase` ( `purchase_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_id` bigint(20) NOT NULL COMMENT '用户ID', `user_name` varchar(50) DEFAULT NULL COMMENT '用户名', `content_id` bigint(20) NOT NULL COMMENT '内容ID', `content_title` varchar(255) DEFAULT NULL COMMENT '内容标题', `pay_type` tinyint(1) NOT NULL COMMENT '购买方式:1.余额支付 2.积分支付', `amount` decimal(10,2) DEFAULT NULL COMMENT '支付金额', `points` int(11) DEFAULT NULL COMMENT '支付积分', `status` tinyint(1) NOT NULL COMMENT '购买状态:1.待支付 2.已支付 3.已取消', `purchase_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '购买时间', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_flag` tinyint(1) DEFAULT '0' COMMENT '是否删除 :0 未删除,1已删除', PRIMARY KEY (`purchase_id`), KEY `idx_user_id` (`user_id`), KEY `idx_content_id` (`content_id`), KEY `idx_user_content` (`user_id`,`content_id`) COMMENT '联合索引,用于快速查询用户是否已购买某内容' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='内容购买记录表,记录用户购买的内容信息'; -- 6. 支付订单表 DROP TABLE IF EXISTS `payment_order`; CREATE TABLE `payment_order` ( `order_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `order_no` varchar(50) NOT NULL COMMENT '订单号', `user_id` bigint(20) NOT NULL COMMENT '用户ID', `user_name` varchar(50) DEFAULT NULL COMMENT '用户名', `amount` decimal(10,2) NOT NULL COMMENT '支付金额', `pay_type` tinyint(1) NOT NULL COMMENT '支付方式:1.微信 2.支付宝', `status` tinyint(1) NOT NULL COMMENT '支付状态:1.待支付 2.已支付 3.支付失败 4.已取消 5.已退款', `channel_order_no` varchar(50) DEFAULT NULL COMMENT '支付渠道订单号', `product_name` varchar(255) DEFAULT NULL COMMENT '商品名称', `product_desc` varchar(255) DEFAULT NULL COMMENT '商品描述', `business_id` bigint(20) DEFAULT NULL COMMENT '关联业务ID', `business_type` varchar(50) DEFAULT NULL COMMENT '业务类型', `notify_url` varchar(255) DEFAULT NULL COMMENT '支付回调地址', `return_url` varchar(255) DEFAULT NULL COMMENT '支付成功跳转地址', `expire_time` datetime DEFAULT NULL COMMENT '过期时间', `pay_time` datetime DEFAULT NULL COMMENT '支付时间', `remark` varchar(255) DEFAULT NULL COMMENT '支付备注', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `delete_flag` tinyint(1) DEFAULT '0' COMMENT '是否删除 :0 未删除,1已删除', PRIMARY KEY (`order_id`), KEY `idx_order_no` (`order_no`), KEY `idx_user_id` (`user_id`), KEY `idx_business_id` (`business_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='支付订单表,记录用户的支付请求和支付结果'; -- 7. 内容表 DROP TABLE IF EXISTS `cms_content`; CREATE TABLE `cms_content` ( `content_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `title` varchar(255) NOT NULL COMMENT '标题', `subtitle` varchar(255) DEFAULT NULL COMMENT '副标题', `content_type` tinyint(1) NOT NULL COMMENT '内容类型(1文章,2视频,3图片)', `category_id` bigint(20) DEFAULT NULL COMMENT '分类ID', `summary` varchar(500) DEFAULT NULL COMMENT '内容摘要', `content` longtext DEFAULT NULL COMMENT '内容详情', `cover_image` varchar(255) DEFAULT NULL COMMENT '封面图片', `author_id` bigint(20) DEFAULT NULL COMMENT '作者ID', `author_name` varchar(50) DEFAULT NULL COMMENT '作者名称', `reviewer_id` bigint(20) DEFAULT NULL COMMENT '审核人ID', `reviewer_name` varchar(50) DEFAULT NULL COMMENT '审核人名称', `audit_status` tinyint(1) NOT NULL COMMENT '审核状态(1草稿,2待审核,3审核通过,4审核拒绝)', `audit_comment` varchar(255) DEFAULT NULL COMMENT '审核意见', `publish_status` tinyint(1) NOT NULL COMMENT '发布状态(1未发布,2已发布,3已下架)', `publish_time` datetime DEFAULT NULL COMMENT '发布时间', `view_count` int(11) DEFAULT '0' COMMENT '阅读量', `like_count` int(11) DEFAULT '0' COMMENT '点赞量', `comment_count` int(11) DEFAULT '0' COMMENT '评论量', `sort` int(11) DEFAULT '0' COMMENT '排序', `is_paid` tinyint(1) DEFAULT '0' COMMENT '是否付费:0免费,1付费', `price` decimal(10,2) DEFAULT NULL COMMENT '付费金额', `required_points` int(11) DEFAULT NULL COMMENT '所需积分', `support_points_pay` tinyint(1) DEFAULT '0' COMMENT '是否支持积分支付:0不支持,1支持', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `create_by` varchar(50) DEFAULT NULL COMMENT '创建人', `update_by` varchar(50) DEFAULT NULL COMMENT '更新人', `delete_flag` tinyint(1) DEFAULT '0' COMMENT '是否删除 :0 未删除,1已删除', PRIMARY KEY (`content_id`), KEY `idx_category_id` (`category_id`), KEY `idx_author_id` (`author_id`), KEY `idx_audit_status` (`audit_status`), KEY `idx_publish_status` (`publish_status`), KEY `idx_publish_time` (`publish_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='内容表,记录各种类型的内容信息'; -- 8. 分类表 DROP TABLE IF EXISTS `cms_category`; CREATE TABLE `cms_category` ( `category_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `category_name` varchar(50) NOT NULL COMMENT '分类名称', `parent_id` bigint(20) DEFAULT '0' COMMENT '父分类ID', `level` int(11) DEFAULT '1' COMMENT '分类层级', `sort` int(11) DEFAULT '0' COMMENT '排序', `status` tinyint(1) DEFAULT '1' COMMENT '状态(1启用,2禁用)', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `create_by` varchar(50) DEFAULT NULL COMMENT '创建人', `update_by` varchar(50) DEFAULT NULL COMMENT '更新人', `delete_flag` tinyint(1) DEFAULT '0' COMMENT '是否删除 :0 未删除,1已删除', PRIMARY KEY (`category_id`), KEY `idx_parent_id` (`parent_id`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='分类表,记录内容的分类信息'; -- 9. 标签表 DROP TABLE IF EXISTS `cms_tag`; CREATE TABLE `cms_tag` ( `tag_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `tag_name` varchar(50) NOT NULL COMMENT '标签名称', `description` varchar(255) DEFAULT NULL COMMENT '标签描述', `use_count` int(11) DEFAULT '0' COMMENT '使用次数', `status` tinyint(1) DEFAULT '1' COMMENT '状态(1启用,2禁用)', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `create_by` varchar(50) DEFAULT NULL COMMENT '创建人', `update_by` varchar(50) DEFAULT NULL COMMENT '更新人', `delete_flag` tinyint(1) DEFAULT '0' COMMENT '是否删除 :0 未删除,1已删除', PRIMARY KEY (`tag_id`), UNIQUE KEY `uk_tag_name` (`tag_name`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='标签表,记录内容的标签信息'; -- 10. 系统用户表 DROP TABLE IF EXISTS `sys_user`; CREATE TABLE `sys_user` ( `user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_name` varchar(50) NOT NULL COMMENT '用户登录名称', `pwd` varchar(100) NOT NULL COMMENT '密码(非明文)', `real_name` varchar(50) DEFAULT NULL COMMENT '真实姓名', `tel` varchar(20) DEFAULT NULL COMMENT '手机', `email` varchar(50) DEFAULT NULL COMMENT '邮箱', `salt` varchar(50) DEFAULT NULL COMMENT '加点盐(登录时候要用到的随机数)', `remark` varchar(255) DEFAULT NULL COMMENT '备注', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `enable` tinyint(1) DEFAULT '1' COMMENT '是否启用(1启用,2禁用)', `delete_flag` tinyint(1) DEFAULT '0' COMMENT '是否删除 :0 未删除,1已删除', PRIMARY KEY (`user_id`), UNIQUE KEY `uk_user_name` (`user_name`), KEY `idx_enable` (`enable`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='系统用户表,记录系统用户信息'; -- 11. 系统角色表 DROP TABLE IF EXISTS `sys_role`; CREATE TABLE `sys_role` ( `role_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '角色ID', `role_code` varchar(50) NOT NULL COMMENT '角色编码', `role_name` varchar(50) NOT NULL COMMENT '角色名称', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `remark` varchar(255) DEFAULT NULL COMMENT '备注', `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记', PRIMARY KEY (`role_id`), UNIQUE KEY `uk_role_code` (`role_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='系统角色表,记录系统角色信息'; -- 12. 系统用户角色关联表 DROP TABLE IF EXISTS `sys_user_role`; CREATE TABLE `sys_user_role` ( `role_id` bigint(20) NOT NULL COMMENT '角色ID', `user_id` bigint(20) NOT NULL COMMENT '用户ID', PRIMARY KEY (`role_id`,`user_id`), KEY `idx_user_id` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='系统用户角色关联表,记录用户与角色的关联关系'; -- 13. 系统菜单表 DROP TABLE IF EXISTS `sys_menu`; CREATE TABLE `sys_menu` ( `menu_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `menu_pid` bigint(20) DEFAULT NULL COMMENT '为空时表示是子系统', `menu_name` varchar(50) NOT NULL COMMENT '菜单名称', `menu_src` varchar(255) DEFAULT NULL COMMENT '菜单链接地址', `menu_icon` varchar(50) DEFAULT NULL COMMENT '菜单图标', `menu_style` varchar(50) DEFAULT NULL COMMENT '菜单样式', `sort` int(11) DEFAULT '0' COMMENT '值越小越排在前面', `note` varchar(255) DEFAULT NULL COMMENT '备注', `delete_flag` varchar(1) DEFAULT '0' COMMENT '删除标记', PRIMARY KEY (`menu_id`), KEY `idx_menu_pid` (`menu_pid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='系统菜单表,记录系统菜单信息'; -- 14. 系统字典表 DROP TABLE IF EXISTS `sys_dict`; CREATE TABLE `sys_dict` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '字典表ID', `dict_code` varchar(50) NOT NULL COMMENT '字典编码', `dict_name` varchar(50) NOT NULL COMMENT '字典名称', `dict_cn` varchar(50) DEFAULT NULL COMMENT '字典值中文文本', `dict_en` varchar(50) DEFAULT NULL COMMENT '字典值英文文本', `dict_value` varchar(50) DEFAULT NULL COMMENT '字典值', `sorts` int(11) DEFAULT NULL COMMENT '字典排序', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_dict_code` (`dict_code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='系统字典表,记录系统字典信息'; -- 15. 系统日志表 DROP TABLE IF EXISTS `sys_log`; CREATE TABLE `sys_log` ( `log_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_id` varchar(50) DEFAULT NULL COMMENT '用户ID', `user_name` varchar(50) DEFAULT NULL COMMENT '用户名称', `log_type` varchar(50) DEFAULT NULL COMMENT '日志类型', `log_content` varchar(500) DEFAULT NULL COMMENT '日志类容', `server_ip` varchar(20) DEFAULT NULL COMMENT '服务端IP', `client_ip` varchar(20) DEFAULT NULL COMMENT '客户端IP', `log_time` varchar(20) DEFAULT NULL COMMENT 'yyyyMMddHHmmss', `note` varchar(255) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`log_id`), KEY `idx_user_id` (`user_id`), KEY `idx_log_type` (`log_type`), KEY `idx_log_time` (`log_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='系统日志表,记录系统操作日志'; SET FOREIGN_KEY_CHECKS = 1;