Files
novel_server/novel.sql

396 lines
22 KiB
SQL
Raw Permalink 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.

/*
Navicat Premium Dump SQL
Source Server : Mac
Source Server Type : MySQL
Source Server Version : 80041 (8.0.41)
Source Host : localhost:3306
Source Schema : novel
Target Server Type : MySQL
Target Server Version : 80041 (8.0.41)
File Encoding : 65001
Date: 23/07/2025 11:36:45
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for admins
-- ----------------------------
DROP TABLE IF EXISTS `admins`;
CREATE TABLE `admins` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '管理员ID',
`username` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '管理员用户名',
`password_hash` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '密码哈希',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
`deleted_at` timestamp NULL DEFAULT NULL COMMENT '软删除时间戳',
PRIMARY KEY (`id`),
KEY `idx_username_deleted` (`username`,`deleted_at`),
KEY `idx_email_deleted` (`deleted_at`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='系统管理员表';
-- ----------------------------
-- Table structure for authors
-- ----------------------------
DROP TABLE IF EXISTS `authors`;
CREATE TABLE `authors` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '作者ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`pen_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '笔名',
`bio` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '作者简介',
`follower_count` int unsigned NOT NULL DEFAULT '0' COMMENT '粉丝数量',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态1=正常2=禁用',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
`deleted_at` timestamp NULL DEFAULT NULL COMMENT '软删除时间戳',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_id` (`user_id`),
KEY `idx_status` (`status`),
CONSTRAINT `fk_authors_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='作者表';
-- ----------------------------
-- Table structure for book_ratings
-- ----------------------------
DROP TABLE IF EXISTS `book_ratings`;
CREATE TABLE `book_ratings` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '评分ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`book_id` bigint NOT NULL COMMENT '小说ID',
`score` decimal(4,2) NOT NULL COMMENT '评分0~10',
`comment` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '用户评论',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_book` (`user_id`,`book_id`),
KEY `idx_book_id` (`book_id`),
CONSTRAINT `fk_book_ratings_book_id` FOREIGN KEY (`book_id`) REFERENCES `books` (`id`),
CONSTRAINT `fk_book_ratings_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='小说评分与评论表';
-- ----------------------------
-- Table structure for book_recommendations
-- ----------------------------
DROP TABLE IF EXISTS `book_recommendations`;
CREATE TABLE `book_recommendations` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`book_id` bigint NOT NULL COMMENT '书籍ID关联 books 表',
`type` tinyint NOT NULL DEFAULT '1' COMMENT '推荐类型1=首页Banner2=编辑推荐3=分类推荐等',
`cover_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '推荐封面图(横图)',
`sort_order` int DEFAULT '0' COMMENT '展示排序,越小越靠前',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否启用1=启用0=禁用',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
`deleted_at` timestamp NULL DEFAULT NULL COMMENT '软删除时间戳',
PRIMARY KEY (`id`),
KEY `idx_book_id_deleted` (`book_id`,`deleted_at`),
KEY `idx_type_sort_deleted` (`type`,`sort_order`,`deleted_at`),
CONSTRAINT `fk_book_recommendations_book_id` FOREIGN KEY (`book_id`) REFERENCES `books` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='书籍推荐配置表';
-- ----------------------------
-- Table structure for books
-- ----------------------------
DROP TABLE IF EXISTS `books`;
CREATE TABLE `books` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '小说ID',
`author_id` bigint NOT NULL COMMENT '作者ID',
`category_id` bigint NOT NULL COMMENT '分类ID',
`title` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '小说标题',
`cover_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '封面图片URL',
`description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '小说简介',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态1=连载中2=完结3=下架',
`words_count` int DEFAULT '0' COMMENT '字数',
`chapters_count` int DEFAULT '0' COMMENT '章节数',
`rating` decimal(4,2) DEFAULT '0.00' COMMENT '评分0.00~10.00',
`read_count` bigint DEFAULT '0' COMMENT '阅读人数',
`current_readers` bigint DEFAULT '0' COMMENT '在读人数',
`tags` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '标签(逗号分隔)',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
`deleted_at` timestamp NULL DEFAULT NULL COMMENT '软删除时间戳',
`is_recommended` tinyint NOT NULL DEFAULT '0' COMMENT '是否推荐0=否1=是',
`is_featured` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否精选0=否1=是',
`language` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'zh' COMMENT '语言,如 zh=中文en=英文jp=日文',
PRIMARY KEY (`id`),
KEY `idx_author_id` (`author_id`),
KEY `idx_category_id` (`category_id`),
KEY `idx_status` (`status`),
CONSTRAINT `fk_books_author_id` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`),
CONSTRAINT `fk_books_category_id` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=91 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='小说表';
-- ----------------------------
-- Table structure for bookshelves
-- ----------------------------
DROP TABLE IF EXISTS `bookshelves`;
CREATE TABLE `bookshelves` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`book_id` bigint NOT NULL COMMENT '小说ID',
`added_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '加入书架时间',
`last_read_chapter_id` bigint DEFAULT NULL COMMENT '最后阅读章节ID',
`last_read_percent` decimal(5,2) DEFAULT '0.00' COMMENT '阅读进度百分比0.00~100.00',
`last_read_at` timestamp NULL DEFAULT NULL COMMENT '最后阅读时间',
`read_status` tinyint NOT NULL DEFAULT '1' COMMENT '阅读状态1=正在读2=已读完3=已收藏',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_book` (`user_id`,`book_id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_book_id` (`book_id`),
CONSTRAINT `fk_bookshelves_book_id` FOREIGN KEY (`book_id`) REFERENCES `books` (`id`),
CONSTRAINT `fk_bookshelves_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户书架表';
-- ----------------------------
-- Table structure for casbin_rule
-- ----------------------------
DROP TABLE IF EXISTS `casbin_rule`;
CREATE TABLE `casbin_rule` (
`id` int NOT NULL AUTO_INCREMENT,
`p_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
`v0` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
`v1` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
`v2` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
`v3` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
`v4` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
`v5` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=66 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='路由权限表';
-- ----------------------------
-- Table structure for categories
-- ----------------------------
DROP TABLE IF EXISTS `categories`;
CREATE TABLE `categories` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '分类ID',
`name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '分类名称',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
`deleted_at` timestamp NULL DEFAULT NULL COMMENT '软删除时间戳',
`channel` tinyint(1) NOT NULL DEFAULT '1' COMMENT '频道类型1=男频2=女频',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='小说分类表';
-- ----------------------------
-- Table structure for chapters
-- ----------------------------
DROP TABLE IF EXISTS `chapters`;
CREATE TABLE `chapters` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '章节ID',
`book_id` bigint NOT NULL COMMENT '小说ID',
`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '章节标题',
`content` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '章节内容',
`word_count` int DEFAULT '0' COMMENT '章节字数',
`sort` int DEFAULT '0' COMMENT '排序序号',
`is_locked` tinyint NOT NULL DEFAULT '0' COMMENT '是否锁定0=免费1=需积分解锁',
`required_score` int NOT NULL DEFAULT '0' COMMENT '解锁该章节所需积分',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
`deleted_at` timestamp NULL DEFAULT NULL COMMENT '软删除时间戳',
PRIMARY KEY (`id`),
KEY `idx_book_id` (`book_id`),
CONSTRAINT `fk_chapters_book_id` FOREIGN KEY (`book_id`) REFERENCES `books` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='章节表';
-- ----------------------------
-- Table structure for feedbacks
-- ----------------------------
DROP TABLE IF EXISTS `feedbacks`;
CREATE TABLE `feedbacks` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '反馈ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '反馈内容',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '处理状态1=未处理2=处理中3=已处理',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '反馈时间',
`updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`),
CONSTRAINT `fk_feedbacks_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户反馈表';
-- ----------------------------
-- Table structure for sign_in_reward_details
-- ----------------------------
DROP TABLE IF EXISTS `sign_in_reward_details`;
CREATE TABLE `sign_in_reward_details` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`rule_id` bigint NOT NULL COMMENT '规则ID关联 sign_in_reward_rules 表',
`day_number` int NOT NULL COMMENT '签到天数1到cycle_days',
`reward_type` tinyint NOT NULL DEFAULT '1' COMMENT '奖励类型1=积分',
`quantity` int NOT NULL COMMENT '奖励数量,如积分数量或礼包数量',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '记录状态1=启用0=禁用',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
`deleted_at` timestamp NULL DEFAULT NULL COMMENT '软删除时间戳',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_rule_id_day_number_deleted` (`rule_id`,`day_number`,`deleted_at`) COMMENT '确保规则下每天唯一奖励',
KEY `idx_rule_id_status_deleted` (`rule_id`,`status`,`deleted_at`) COMMENT '规则ID和状态查询索引',
CONSTRAINT `fk_sign_in_reward_details_rule_id` FOREIGN KEY (`rule_id`) REFERENCES `sign_in_reward_rules` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='签到奖励详情表';
-- ----------------------------
-- Table structure for sign_in_reward_rules
-- ----------------------------
DROP TABLE IF EXISTS `sign_in_reward_rules`;
CREATE TABLE `sign_in_reward_rules` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`rule_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '规则名称如“7天签到活动”',
`cycle_days` int NOT NULL COMMENT '奖励周期天数如7天',
`start_date` date NOT NULL COMMENT '活动开始日期',
`end_date` date NOT NULL COMMENT '活动结束日期',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '规则状态1=启用0=禁用',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
`deleted_at` timestamp NULL DEFAULT NULL COMMENT '软删除时间戳',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_rule_name_deleted` (`rule_name`,`deleted_at`) COMMENT '确保规则名称唯一',
KEY `idx_status_start_end_deleted` (`status`,`start_date`,`end_date`,`deleted_at`) COMMENT '规则状态和活动时间查询索引'
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='签到奖励规则表';
-- ----------------------------
-- Table structure for user_chapter_purchases
-- ----------------------------
DROP TABLE IF EXISTS `user_chapter_purchases`;
CREATE TABLE `user_chapter_purchases` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '购买记录ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`book_id` bigint NOT NULL COMMENT '小说ID',
`chapter_id` bigint NOT NULL COMMENT '章节ID',
`points_used` int NOT NULL COMMENT '消耗积分数',
`purchase_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '购买时间',
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_book_id` (`book_id`),
KEY `idx_chapter_id` (`chapter_id`),
CONSTRAINT `fk_user_chapter_purchases_book_id` FOREIGN KEY (`book_id`) REFERENCES `books` (`id`),
CONSTRAINT `fk_user_chapter_purchases_chapter_id` FOREIGN KEY (`chapter_id`) REFERENCES `chapters` (`id`),
CONSTRAINT `fk_user_chapter_purchases_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户章节购买记录表';
-- ----------------------------
-- Table structure for user_follow_authors
-- ----------------------------
DROP TABLE IF EXISTS `user_follow_authors`;
CREATE TABLE `user_follow_authors` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '关注ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`author_id` bigint NOT NULL COMMENT '作者ID',
`followed_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '关注时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_author` (`user_id`,`author_id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_author_id` (`author_id`),
CONSTRAINT `fk_user_follow_authors_author_id` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`),
CONSTRAINT `fk_user_follow_authors_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户关注作者表';
-- ----------------------------
-- Table structure for user_points_logs
-- ----------------------------
DROP TABLE IF EXISTS `user_points_logs`;
CREATE TABLE `user_points_logs` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '积分流水ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`change_type` tinyint NOT NULL COMMENT '变动类型1=消费(spend), 2=收入(earn)',
`points_change` int NOT NULL COMMENT '积分变化数,正数增加,负数减少',
`related_order_id` bigint DEFAULT NULL COMMENT '关联ID当change_type=1时为chapter_purchases.id当change_type=2时为advertisement_records.id',
`description` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '变动说明',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '变动时间',
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_related_order_id` (`related_order_id`),
CONSTRAINT `fk_user_points_logs_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户积分流水表';
-- ----------------------------
-- Table structure for user_read_history
-- ----------------------------
DROP TABLE IF EXISTS `user_read_history`;
CREATE TABLE `user_read_history` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '历史记录ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`book_id` bigint NOT NULL COMMENT '小说ID',
`chapter_id` bigint NOT NULL COMMENT '最后阅读章节ID',
`read_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后阅读时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_book` (`user_id`,`book_id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_book_id` (`book_id`),
KEY `fk_user_read_history_chapter_id` (`chapter_id`),
CONSTRAINT `fk_user_read_history_book_id` FOREIGN KEY (`book_id`) REFERENCES `books` (`id`),
CONSTRAINT `fk_user_read_history_chapter_id` FOREIGN KEY (`chapter_id`) REFERENCES `chapters` (`id`),
CONSTRAINT `fk_user_read_history_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户阅读历史记录表';
-- ----------------------------
-- Table structure for user_read_records
-- ----------------------------
DROP TABLE IF EXISTS `user_read_records`;
CREATE TABLE `user_read_records` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '记录ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`book_id` bigint NOT NULL COMMENT '小说ID',
`chapter_id` bigint NOT NULL COMMENT '章节ID',
`progress` int NOT NULL DEFAULT '0' COMMENT '阅读进度百分比(0-100)',
`read_at` datetime NOT NULL COMMENT '阅读时间',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_book_chapter` (`user_id`,`book_id`,`chapter_id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_book_id` (`book_id`),
KEY `idx_chapter_id` (`chapter_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户阅读记录表';
-- ----------------------------
-- Table structure for user_sign_in_logs
-- ----------------------------
DROP TABLE IF EXISTS `user_sign_in_logs`;
CREATE TABLE `user_sign_in_logs` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`user_id` bigint NOT NULL COMMENT '用户ID关联 users 表',
`rule_id` bigint NOT NULL COMMENT '规则ID关联 sign_in_reward_rules 表',
`reward_detail_id` bigint NOT NULL COMMENT '奖励详情ID关联 sign_in_reward_details 表',
`sign_in_date` date NOT NULL COMMENT '签到日期',
`quantity` int NOT NULL COMMENT '奖励数量,如积分数量或礼包数量',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '记录状态1=有效0=无效',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
`deleted_at` timestamp NULL DEFAULT NULL COMMENT '软删除时间戳',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_rule_sign_in_date_deleted` (`user_id`,`rule_id`,`sign_in_date`,`deleted_at`) COMMENT '确保用户在规则下每日唯一签到',
KEY `idx_user_id_rule_id_deleted` (`user_id`,`rule_id`,`deleted_at`) COMMENT '用户ID和规则ID查询索引',
KEY `fk_user_sign_in_logs_rule_id` (`rule_id`),
KEY `fk_user_sign_in_logs_reward_detail_id` (`reward_detail_id`),
CONSTRAINT `fk_user_sign_in_logs_reward_detail_id` FOREIGN KEY (`reward_detail_id`) REFERENCES `sign_in_reward_details` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_user_sign_in_logs_rule_id` FOREIGN KEY (`rule_id`) REFERENCES `sign_in_reward_rules` (`id`) ON DELETE CASCADE,
CONSTRAINT `fk_user_sign_in_logs_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户签到记录表';
-- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`username` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户名',
`password_hash` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '密码哈希',
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '头像URL',
`email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '邮箱',
`points` bigint unsigned NOT NULL DEFAULT '0' COMMENT '积分',
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',
`updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
`deleted_at` timestamp NULL DEFAULT NULL COMMENT '软删除时间戳',
`background_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '作者背景图',
`attention_count` int DEFAULT '0' COMMENT '关注他人的数量 attention count',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_username` (`username`),
KEY `idx_email_deleted` (`email`,`deleted_at`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户表';
SET FOREIGN_KEY_CHECKS = 1;