这个项目一开始不是为了开源使用的,所以数据库的配置暂时没有做成一键安装的方式。等以后有时间了再改成可以直接上传代码就能使用的版本,现在如果需要使用的话,需要按照下面的教程设置好数据库。
数据库的结构:
网站中主要用到了以上6个Table,novel、chapter、content
用于存小说,search
用于记录用户搜索失败的小说,source
记录小说来源,user
用于用户登录。
按照下方图片中这几个表的格式在自己数据库中创建对应的Table
:
novel
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for novel
-- ----------------------------
DROP TABLE IF EXISTS `novel`;
CREATE TABLE `novel` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(128) NOT NULL DEFAULT '',
`author` varchar(16) DEFAULT '',
`total` int(11) DEFAULT '0',
`category` varchar(16) DEFAULT '未知',
`introduce` text,
`domain` varchar(255) DEFAULT '',
`source` varchar(255) DEFAULT '',
`readCount` int(11) DEFAULT '0',
`isDelete` tinyint(1) DEFAULT '0',
`isComplete` tinyint(1) DEFAULT '1',
`isUpload` tinyint(1) DEFAULT '0',
`ctime` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`utime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `title` (`title`) USING BTREE,
KEY `author` (`author`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=10724 DEFAULT CHARSET=utf8;
SET FOREIGN_KEY_CHECKS = 1;
chapter
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for chapter
-- ----------------------------
DROP TABLE IF EXISTS `chapter`;
CREATE TABLE `chapter` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL DEFAULT '',
`novel_id` int(11) NOT NULL,
`order_index` int(11) DEFAULT '0',
`source` varchar(255) DEFAULT '',
`ctime` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`utime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `novel_id` (`novel_id`)
) ENGINE=InnoDB AUTO_INCREMENT=8070576 DEFAULT CHARSET=utf8;
SET FOREIGN_KEY_CHECKS = 1;
content
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for content
-- ----------------------------
DROP TABLE IF EXISTS `content`;
CREATE TABLE `content` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`chapter_id` int(11) NOT NULL DEFAULT '0',
`content` mediumtext NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `chapter_id` (`chapter_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=9235311 DEFAULT CHARSET=utf8mb4;
SET FOREIGN_KEY_CHECKS = 1;
search
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for search
-- ----------------------------
DROP TABLE IF EXISTS `search`;
CREATE TABLE `search` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`kw` varchar(255) NOT NULL DEFAULT '',
`isDelete` tinyint(1) DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `kw` (`kw`(191)) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=8955 DEFAULT CHARSET=utf8mb4;
SET FOREIGN_KEY_CHECKS = 1;
source
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for source
-- ----------------------------
DROP TABLE IF EXISTS `source`;
CREATE TABLE `source` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`novel` varchar(255) DEFAULT NULL,
`category` varchar(16) DEFAULT '',
`isDownload` tinyint(1) DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `novel` (`novel`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=15441 DEFAULT CHARSET=utf8;
SET FOREIGN_KEY_CHECKS = 1;
user
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`password` char(32) NOT NULL,
`name` varchar(16) DEFAULT NULL,
`ip` varchar(16) DEFAULT NULL,
`login_times` int(11) DEFAULT '0',
`role` tinyint(1) DEFAULT '0',
`status` smallint(1) DEFAULT '1',
`isVip` tinyint(1) DEFAULT '0',
`isDelete` tinyint(1) DEFAULT '0',
`ctime` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`utime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
SET FOREIGN_KEY_CHECKS = 1;
然后在Config.php
中配置好自己的数据库,这时上传代码,应该就不会报错了。
爬虫:
爬虫的代码基本写在cacheController、indexController
中(目前已经注释),如果想要使用这里功能,需要打开注释。
解析HTML使用的框架为QueryList,感兴趣的可以点击看看他们的文档。
网站架构:
https://tuiwenya.com/index.php?c=chapter&a=index&n=1628&name=斗破之无上之境
网站基于MVC架构实现,以上面这个路径为例,index.php
为入口文件,c
参数对应控制器的名称,a
参数对应方法名称,n
参数对应小说的id,name参数对应小说名。
想要运行指定的方法,就只需要按照这种方式传参数访问就可以实现了。
其他的想到了再写~
- 演示网址:https://tuiwenya.com
- Github:https://github.com/futao6206/tuiwenya
- 公众号:桃子推文小站