Files
lv8girl/README.md
2026-02-23 23:50:04 +08:00

7.7 KiB
Raw Permalink Blame History

lv8girl - 绿坝娘二次元论坛

一个基于 Go + Gin + SQLite 构建的二次元社区论坛系统。

项目概述

lv8girl 是一个功能完整的社区论坛系统,支持用户注册登录、帖子发布审核、评论点赞、私信系统和管理后台等功能。

技术栈

  • 语言: Go 1.21+
  • Web框架: Gin
  • 数据库: SQLite (使用 glebarez/sqlite 纯Go实现无需CGO)
  • ORM: GORM
  • 会话管理: gin-sessions

目录结构

lv8girl/
├── cmd/
│   └── server/
│       └── main.go              # 程序入口文件
│
├── internal/                    # 私有应用代码
│   ├── config/                  # 配置管理
│   │   └── config.go            # 应用配置定义
│   │
│   ├── controllers/             # 控制器层 - 处理HTTP请求
│   │   ├── admin.go             # 管理后台控制器
│   │   ├── auth.go              # 认证控制器(登录/注册/登出)
│   │   ├── discussion.go        # 帖子发布控制器
│   │   ├── home.go              # 首页/帖子详情控制器
│   │   ├── message.go           # 私信控制器
│   │   └── user.go              # 用户资料控制器
│   │
│   ├── middleware/              # 中间件
│   │   └── auth.go              # 认证中间件(登录检查/管理员检查)
│   │
│   ├── models/                  # 数据模型定义
│   │   └── models.go            # User, Discussion, Comment, Like, PrivateMessage
│   │
│   ├── repositories/            # 数据访问层 - 数据库操作
│   │   ├── db.go                # 数据库初始化
│   │   ├── comment.go           # 评论数据访问
│   │   ├── discussion.go        # 帖子数据访问
│   │   ├── like.go              # 点赞数据访问
│   │   ├── message.go           # 私信数据访问
│   │   └── user.go              # 用户数据访问
│   │
│   ├── routes/                  # 路由配置
│   │   └── routes.go            # 所有路由定义
│   │
│   ├── services/                # 业务逻辑层
│   │   ├── admin.go             # 管理业务逻辑
│   │   ├── auth.go              # 认证业务逻辑
│   │   ├── discussion.go        # 帖子业务逻辑
│   │   ├── message.go           # 私信业务逻辑
│   │   └── user.go              # 用户业务逻辑
│   │
│   └── utils/                   # 工具函数
│       └── utils.go             # 通用工具函数
│
├── templates/                   # HTML模板文件
│   ├── index.html               # 首页
│   ├── login.html               # 登录页
│   ├── register.html            # 注册页
│   ├── post.html                # 帖子详情页
│   ├── post_discussion.html     # 发帖页
│   ├── profile.html             # 用户资料页
│   ├── messages.html            # 私信列表页
│   ├── send_message.html        # 发送私信页
│   ├── admin_dashboard.html     # 管理后台-仪表盘
│   ├── admin_pending_posts.html # 管理后台-待审核帖子
│   ├── admin_pending_users.html # 管理后台-待审核用户
│   ├── admin_posts.html         # 管理后台-帖子管理
│   ├── admin_users.html         # 管理后台-用户管理
│   └── admin_comments.html      # 管理后台-评论管理
│
├── static/                      # 静态资源(CSS/JS)
├── uploads/                     # 用户上传文件
│   ├── avatars/                 # 用户头像
│   └── posts/                   # 帖子图片
│
├── data/                        # 数据库文件目录
│   └── lv8girl.db               # SQLite数据库
│
├── go.mod                       # Go模块定义
├── go.sum                       # 依赖校验文件
├── Dockerfile                   # Docker构建文件
├── compose.yaml                 # Docker Compose配置
└── README.md                    # 项目说明文档

架构设计

项目采用分层架构,职责分离清晰:

请求 → 路由(Routes) → 中间件(Middleware) → 控制器(Controllers) → 服务(Services) → 仓库(Repositories) → 数据库

各层职责

层级 职责 示例
Routes 定义URL路由规则绑定控制器方法 r.GET("/", homeCtrl.Index)
Middleware 请求预处理(认证、权限检查等) AuthRequired(), AdminRequired()
Controllers 处理HTTP请求参数验证调用Service 解析表单数据返回HTML/JSON
Services 业务逻辑处理,事务管理 用户注册流程,帖子审核流程
Repositories 数据库CRUD操作 FindByID, Create, Update
Models 数据结构定义 User, Discussion 结构体

功能特性

用户功能

  • 用户注册(需管理员审核)
  • 用户登录/登出
  • 个人资料页
  • 头像上传

帖子功能

  • 发布帖子(支持图片上传,需审核)
  • 帖子列表浏览
  • 帖子详情查看
  • 点赞功能
  • 评论功能

私信功能

  • 发送私信
  • 私信列表
  • 未读消息提示

管理后台

  • 仪表盘统计
  • 用户审核管理
  • 帖子审核管理
  • 用户角色管理
  • 评论管理

快速开始

本地运行

# 克隆项目
git clone <repository-url>
cd lv8girl

# 下载依赖
go mod tidy

# 运行
go run ./cmd/server

访问 http://localhost:8080

Docker运行

# 构建并运行
docker-compose up --build

默认账号

管理员账号:

  • 用户名: admin
  • 密码: admin123

配置说明

配置文件位于 internal/config/config.go

type Config struct {
    Server   ServerConfig   // 服务端口等
    Database DatabaseConfig // 数据库路径
    Session  SessionConfig  // 会话密钥
    App      AppConfig      // 应用名称版本
}

数据库模型

User (用户)

字段 类型 说明
id uint 主键
username string 用户名
email string 邮箱
password_hash string 密码哈希
avatar string 头像路径
role string 角色(user/admin/banned)
status string 状态(pending/approved/rejected)
last_active time 最后活动时间

Discussion (帖子)

字段 类型 说明
id uint 主键
user_id uint 作者ID
title string 标题
content text 内容
image_path string 图片路径
status string 状态(pending/approved/rejected)
views int 浏览量

Comment (评论)

字段 类型 说明
id uint 主键
post_id uint 帖子ID
user_id uint 评论者ID
content text 内容

Like (点赞)

字段 类型 说明
id uint 主键
post_id uint 帖子ID
user_id uint 用户ID

PrivateMessage (私信)

字段 类型 说明
id uint 主键
from_user_id uint 发送者ID
to_user_id uint 接收者ID
content text 内容
is_read bool 是否已读

开发指南

添加新功能

  1. models/ 添加数据模型
  2. repositories/ 添加数据访问方法
  3. services/ 添加业务逻辑
  4. controllers/ 添加控制器
  5. routes/ 注册路由
  6. templates/ 添加模板

代码规范

  • 遵循 Go 命名规范
  • 每个包有明确的职责
  • 错误要妥善处理
  • 敏感信息不要硬编码

许可证

MIT License