-- 创建数据库表结构 -- 作者: 王志维 -- 创建时间: 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 '账户总余额', `withdrawable_balance` decimal(10,2) DEFAULT '0.00' COMMENT '可提现余额', `non_withdrawable_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='账户表,记录用户的账户信息'; -- 18. 提现记录表 DROP TABLE IF EXISTS `withdrawal_record`; CREATE TABLE `withdrawal_record` ( `record_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `user_id` bigint(20) NOT NULL COMMENT '用户ID', `user_name` varchar(50) DEFAULT NULL COMMENT '用户名', `withdrawal_amount` decimal(10,2) NOT NULL COMMENT '提现金额', `fee_amount` decimal(10,2) NOT NULL COMMENT '手续费', `actual_amount` decimal(10,2) NOT NULL COMMENT '实际到账金额', `status` tinyint(1) NOT NULL COMMENT '提现状态:1.待处理 2.处理中 3.成功 4.失败', `withdrawal_no` varchar(50) NOT NULL COMMENT '提现单号', `bank_name` varchar(100) DEFAULT NULL COMMENT '银行名称', `bank_account` varchar(100) DEFAULT NULL COMMENT '银行账号', `bank_cardholder` 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 '更新时间', `delete_flag` tinyint(1) DEFAULT '0' COMMENT '是否删除 :0 未删除,1已删除', PRIMARY KEY (`record_id`), KEY `idx_user_id` (`user_id`), KEY `idx_withdrawal_no` (`withdrawal_no`) ) 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.签到奖励 6.赠送 7.其他', `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 '交易备注', `is_expense` tinyint(1) NOT NULL COMMENT '是否支出:1.是 0.否', `input_token` int(11) DEFAULT NULL COMMENT '输入token', `output_token` int(11) DEFAULT NULL COMMENT '输出token', `total_tokens` int(11) DEFAULT NULL COMMENT '合计tokens', `model_name` varchar(100) DEFAULT NULL COMMENT '处理的模型名称', `question` text DEFAULT NULL COMMENT '对应回答的问题或需求', `income_type` varchar(50) DEFAULT NULL COMMENT '收入类型:recharge(充值)、sign_in(签到奖励)', `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_ids` varchar(255) 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_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='系统日志表,记录系统操作日志'; -- 16. 大模型Token价格表 DROP TABLE IF EXISTS `model_price`; CREATE TABLE `model_price` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `vendor` varchar(64) NOT NULL COMMENT '厂商', `model_name` varchar(128) NOT NULL COMMENT '模型名称', `input_price` decimal(10,4) NOT NULL COMMENT '输入价格:元/百万Token', `output_price` decimal(10,4) NOT NULL COMMENT '输出价格:元/百万Token', `input_per_cent` bigint NOT NULL COMMENT '1分钱可购买输入Token数', `output_per_cent` bigint NOT NULL COMMENT '1分钱可购买输出Token数', `unit` varchar(32) DEFAULT '百万Token' COMMENT '价格单位', `remark` varchar(255) DEFAULT '' COMMENT '备注', `created_time` datetime DEFAULT NULL, `updated_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `idx_vendor` (`vendor`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='大模型Token价格表'; SET FOREIGN_KEY_CHECKS = 1;