# fiction **Repository Path**: tian3615/fiction ## Basic Information - **Project Name**: fiction - **Description**: fiction小说网 本项目是整套小说系统的后端源码,基于 Vue3 + Vite + Element Plus,对接后端 fiction 提供的 REST 接口,展示小说列表、详情、阅读、分类、排行、书架、搜索、登录等功能页面。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-11 - **Last Updated**: 2026-01-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ![](assets/logo2.png)

## 项目简介 本系统是一个完整的 **在线小说网站解决方案**,由三个彼此解耦又紧密协作的子项目组成: - **前端站点:`ad-fiction-front`** - 技术栈:Vue3 + Vite + Element Plus + Pinia + Axios。 - 负责:小说首页、详情、阅读、分类、排行、搜索、书架、评论、登录/个人中心等可视化页面。 - **后端服务:`fiction`** - 技术栈:Spring Boot 2.7.11 + MyBatis-Plus + MySQL + Redis + Sa-Token + Druid + x-file-storage + WebDAV。 - 负责:对外 REST API、业务逻辑处理、登录与权限、缓存、文件存储对接。 - **爬虫采集:`fiction_spider`** - 技术栈:Scrapy + PyMySQL + webdav4 + requests。 - 负责:从第三方小说站(如奇书网)批量采集小说及章节内容,写入 MySQL,并可将 txt/封面同步到 WebDAV。 整体形成:**数据采集 → 数据存储 → 服务接口 → 前端展示** 的闭环,既能快速搭建自己的小说站点,也可以作为一套学习/演示级的「全栈 + 爬虫」综合项目。 --- ## 总体架构图 ![1](assets/f.png) --- ## 开发接口说明 https://docs.apipost.net/docs/2d7a593fb864000?locale=zh-cn ## 数据源 项目中所涉及的图片和文本内容已经打包成zip包 可供下载 https://www.123865.com/s/Z7EcVv-QaStd 项目开发阶段采用123云盘的webdev方式上传,并且通过直链鉴权方式提供阅览,后续可自行开发其他存储方式 ## 系列开发笔记 [fiction中文网前端代码分析 | ad博客](https://blog.aiheadn.cn/archives/806da430.html) [fiction中文网后端代码分析 | ad博客](https://blog.aiheadn.cn/archives/47e3ed5a.html) [fiction中文网爬虫代码分析 | ad博客](https://blog.aiheadn.cn/archives/33410d32.html) ~~[fiction中文网flutter代码分析 | ad博客](https://blog.aiheadn.cn/archives/b701ad99.html) 该子项目开发失败 已放弃~~ ### 项目预览图 ![Snipaste_2026-01-28_23-47-50](assets/Snipaste_2026-01-28_23-47-50.webp) ![Snipaste_2026-01-28_23-48-08](assets/Snipaste_2026-01-28_23-48-08.webp) ![Snipaste_2026-01-28_23-48-24](assets/Snipaste_2026-01-28_23-48-24.webp) ![Snipaste_2026-01-28_23-48-36](assets/Snipaste_2026-01-28_23-48-36.webp) ![Snipaste_2026-01-28_23-48-51](assets/Snipaste_2026-01-28_23-48-51.webp) ![Snipaste_2026-01-28_23-56-32](assets/Snipaste_2026-01-28_23-56-32.webp) ![Snipaste_2026-01-28_23-56-57](assets/Snipaste_2026-01-28_23-56-57.webp) ![Snipaste_2026-01-28_23-57-02](assets/Snipaste_2026-01-28_23-57-02.webp) ![Snipaste_2026-01-28_23-57-21](assets/Snipaste_2026-01-28_23-57-21.webp) ![Snipaste_2026-01-28_23-57-30](assets/Snipaste_2026-01-28_23-57-30.webp) ![Snipaste_2026-01-28_23-57-52](assets/Snipaste_2026-01-28_23-57-52.webp) ![Snipaste_2026-01-28_23-58-03](assets/Snipaste_2026-01-28_23-58-03.webp) ![Snipaste_2026-01-28_23-58-45](assets/Snipaste_2026-01-28_23-58-45.webp) ![Snipaste_2026-01-28_23-59-58](assets/Snipaste_2026-01-28_23-59-58.webp) ## 当前项目:后端 `fiction` ### 技术栈 - Spring Boot 2.7.11 - MyBatis-Plus - MySQL、Redis - Sa-Token(含 Redis 集成) - Druid 数据源 - x-file-storage-spring + Sardine(WebDAV) - Fastjson、Gson、Lombok 等 ### 关键配置(`src/main/resources/application.yml` 摘要) - **服务端口** - `server.port: 8080` - **Sa-Token** - `sa-token.token-name: token` - `sa-token.timeout: 360000`(秒) - `sa-token.is-concurrent: true` - `sa-token.is-share: true` - `sa-token.isReadCookie: false`(关闭 Cookie) - **数据源(Druid + MySQL)** - `spring.datasource.druid.url: jdbc:mysql://.../fiction` - `spring.datasource.druid.username` / `password` - **Redis** - `spring.redis.host` / `port` / `password` / `database` - **MyBatis-Plus** - `mybatis-plus.mapper-locations: classpath*:mapper/*.xml` - `configuration.map-underscore-to-camel-case: true` - **文件存储(WebDAV)** - `dromara.x-file-storage.default-platform: webdav-1` - `dromara.x-file-storage.webdav[0]`: - `server`:WebDAV 服务地址 - `user` / `password`:认证信息 - `base-path`、`storage-path`:存储路径配置 > **生产环境建议**:将数据库/Redis/WebDAV 等敏感信息放到环境变量或外部配置,不要直接以明文提交。 ### 模块结构概览 - `common`:统一返回对象 `R`、全局异常处理 `GlobalExceptionHandler` 等。 - `config`:`MyBatisPlusConfig`、`RedisConfig`、`ServletConfig` 等框架层配置。 - `controller`:REST 控制器(小说、章节、书架、评论、用户登录等)。 - `entity`:实体类,对应数据库表。 - `mapper`:MyBatis-Plus Mapper 接口(XML 在 `resources/mapper`)。 - `Service`:业务服务层。 - `filter`:Sa-Token 相关配置、拦截器。 - `utils`:工具类(分页、文件存储封装、时间处理等)。 ### 入口类 `FictionApplication` - `@SpringBootApplication`:Spring Boot 启动入口 - `@EnableFileStorage`:开启 x-file-storage 文件存储能力 - `@MapperScan("com.aiheadn.fiction.mapper")`:扫描 Mapper 接口 - 启动后会打印 Sa-Token 当前配置: ```java SpringApplication.run(FictionApplication.class, args); System.out.println("启动成功,Sa-Token 配置如下:" + SaManager.getConfig()); ``` ### 运行方式 前提:已启动 MySQL、Redis,并在 `application.yml` 中配置正确连接信息。 ```bash # 在 fiction 目录下 mvn clean package # 方式一:开发模式 mvn spring-boot:run # 方式二:运行打包后的 jar java -jar target/fiction-0.0.1-SNAPSHOT.jar ``` 默认访问地址:`http://localhost:8080`。 ---