Skip to content

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BookWeb

BookWeb 是一个使用 Go 语言开发的现代化小说阅读 Web 程序,旨在替代杰奇 1.7 系统,提供更高的性能、更好的可维护性和更丰富的功能。

✨ 特性

  • 高性能:基于 Go 语言和 httprouter,提供出色的并发处理能力
  • 移动端适配:智能识别移动端设备,自动切换模板与路由,完美支持手机访问
  • Redis 缓存:可选的 Redis 缓存支持,大幅提升页面响应速度
  • 热重载:支持路由配置、插件配置热重载,无需重启即可生效
  • 插件系统:灵活的插件架构,支持广告管理、数据库优化、长尾词采集等
  • 多模板支持:支持多套前端模板,轻松切换站点风格
  • 统一日志:结构化日志系统,支持文件轮换 (Size/Age) 与自动清理
  • 完整后台:功能齐全的管理后台,包含文章、用户、配置、日志管理
  • 用户系统:支持用户注册、登录、书架、书签等功能
  • SEO 友好:可配置的 URL 路由、Sitemap 生成及精细化 SEO 规则
  • GZIP 压缩:可选的 GZIP 压缩,减少传输带宽
  • ID 转换:支持 ID 算术转换,便于多站点共享数据库

📁 项目结构

bookweb/
├── admin/              # 后台管理模块
│   ├── admin.go        # 后台控制器
│   ├── auth.go         # 后台认证
│   └── template/       # 后台模板
├── cmd/                # 命令行工具
│   └── genpwd/         # 密码生成工具
├── config/             # 配置文件目录
│   ├── config.conf     # 主配置文件
│   ├── router.conf     # 路由配置
│   ├── seo.conf        # SEO 规则配置
│   ├── link.conf       # 友情链接配置
│   └── plugins.conf    # 插件配置
├── controller/         # 前台控制器
├── dao/                # 数据访问层
├── model/              # 数据模型
├── plugin/             # 插件目录
│   ├── ads/            # 广告管理插件
│   ├── db_optimizer/   # 数据库优化插件
│   ├── langtail/       # 长尾词采集插件
│   └── sitemap/        # 网站地图插件
├── router/             # 路由管理
├── service/            # 服务层
├── sql/                # SQL 脚本
├── static/             # 静态资源
├── template/           # 前台模板
├── utils/              # 工具函数
├── files/              # 小说文件存储
├── main.go             # 程序入口
└── go.mod              # Go 模块定义

🛠️ 命令行工具

密码生成器 (genpwd)

用于生成 bcrypt 加密的密码哈希,可用于重置管理员或用户密码。

# 使用默认密码 admin123
go run ./cmd/genpwd/

# 使用自定义密码
go run ./cmd/genpwd/ "你的新密码"

输出示例:

Password: admin123
Bcrypt Hash: $2a$10$xxxxx...
SQL: UPDATE admin SET password = '$2a$10$xxxxx...' WHERE username = 'admin';

🚀 快速开始

环境要求

  • Go 1.24+
  • MySQL 5.7+
  • Redis(可选)

安装步骤

  1. 克隆项目

    git clone https://github.com/cheug0/bookweb.git
    cd bookweb
  2. 初始化数据库

    # 导入数据库结构和初始数据
    mysql -u root -p your_database < sql/data.sql
    mysql -u root -p your_database < sql/admin.sql
  3. 修改配置文件

    编辑 config/config.conf:

    {
      "db": {
        "driver": "mysql",
        "host": "localhost",
        "port": 3306,
        "user": "your_user",
        "password": "your_password",
        "dbname": "your_database"
      },
      "server": {
        "host": "localhost",
        "port": 8080
      },
      "site": {
        "sitename": "我的小说站",
        "domain": "localhost:8080",
        "template": "html"
      },
      "log": {
        "level": "info",
        "output": "file",
        "file_path": "logs/app.log",
        "max_size": 100,
        "max_age": 7
      }
    }
  4. 编译运行

    go build -o bookweb
    ./bookweb
  5. 访问站点

    • 前台:http://localhost:8080
    • 后台:http://localhost:8080/admin(默认账号:admin / admin123)

⚙️ 配置说明

主配置 (config.conf)

配置项 说明
db 数据库连接配置
server HTTP 服务器配置
site.sitename 站点名称
site.domain 站点域名
site.mobile_domain 移动端域名
site.template PC 端模板目录
site.mobile_template 移动端模板目录
site.admin_path 后台管理路径
site.force_domain 强制域名跳转
site.gzip_enabled 启用 GZIP 压缩
site.id_trans_rule ID 转换规则(如 +1000)
redis Redis 缓存配置
storage 存储配置(local/oss)
log 日志系统配置

路由配置 (router.conf)

支持自定义 URL 模式:

{
  "routes": {
    "book": "/book_:aid.html",
    "read": "/book/:aid/:cid.html",
    "sort": "/sort/:sid/:page/"
  }
}

SEO 配置 (seo.conf)

可配置各页面的 Title、Keywords、Description 模板。

🔌 插件系统

内置插件

插件 说明
ads 广告位管理,支持自定义广告槽位
db_optimizer 数据库连接优化
langtail 长尾词采集支持

插件配置 (plugins.conf)

{
  "ads": {
    "enabled": true,
    "slots": {
      "header": {
        "name": "顶部广告",
        "content": "<script>...</script>",
        "enabled": true
      }
    }
  },
  "langtail": {
    "enabled": true,
    "fetch_cycle_days": 7,
    "cache_seconds": 3600,
    "route_pattern": "/books/:lid",
    "show_count": 50 // 显示数量限制
  }
}

长尾词采集 (Langtail)

  • 自动采集:根据小说名自动从百度搜索下拉框采集长尾关键词。
  • 智能展示:支持配置显示数量 (show_count),按最新获取时间排序。
  • SEO 优化:自动生成关联长尾词页面,提升站点收录。

🎨 模板开发

模板文件位于 template/ 目录,支持多套模板切换。

本地化资源

项目内置了 Google Fonts (Inter 字体) 的本地化版本,位于 static/css/fonts.css,无需依赖外部网络,加快加载速度。

模板变量

全局变量 (Global Variables)

所有页面均可使用的变量:

变量名 类型 说明
SiteName string 站点名称
SiteDomain string 站点域名
IsLogin bool 用户是否已登录
Username string 当前登录用户名
CurrentTitle string 当前页面推测的 SEO 标题
CurrentKeywords string 当前页面 SEO 关键词
CurrentDesc string 当前页面 SEO 描述
SortLinks []map 分类导航链接列表 (Caption, Url, Id)
TopUrl string 排行榜页面 URL
Analytics html 统计代码 (原样输出)

常用函数 (Helper Functions)

可在模板中直接调用的辅助函数:

URL 生成

  • bookUrl(id): 生成小说详情页 URL
  • readUrl(aid, cid): 生成章节阅读页 URL
  • sortUrl(sortID, page): 生成分类列表页 URL
  • bookIndexUrl(id): 生成小说目录页 URL
  • langtailUrl(lid): 生成长尾词落地页 URL
  • cover(id): 获取小说封面图片路径

数据格式化

  • formatDate(timestamp): 格式化时间戳 (YYYY-MM-DD)
  • formatDateShort(timestamp): 简短日期格式 (MM-DD)
  • formatSize(bytes): 格式化文件大小 (如 1.2万字)
  • safe(html): 输出不转义的 HTML 内容

工具函数

  • add(a, b): 加法运算
  • minus(a, b): 减法运算
  • mod(a, b): 取模运算
  • ad(slot): 输出指定槽位的广告代码

切换模板

修改 config.conf 中的 site.template 为对应模板目录名。

📝 后台功能

  • 仪表板:站点统计概览
  • 小说管理:小说增删改查
  • 用户管理:用户列表、编辑、书架书签管理
  • 友情链接:链接管理
  • 模块设置:路由、分类、SEO 配置
  • 插件管理:插件启用/配置
  • 系统设置:站点、数据库、Redis、存储配置
  • 安全设置:修改密码、后台入口

🔧 开发说明

技术栈

  • Web 框架:httprouter
  • 数据库:MySQL + go-sql-driver
  • 缓存:Redis (go-redis/v9)
  • 模板:Go html/template
  • 其他:UUID、GZIP 中间件

代码规范

  • 使用 MVC 分层架构
  • DAO 层使用预编译 SQL 语句
  • 支持缓存自动失效

📄 License

MIT License

🤝 贡献

欢迎提交 Issue 和 Pull Request!

About

go开发版本杰奇1.7系统

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages