Skip to content

Clyanser/BlogCommunity

Repository files navigation

GoBlog -仿知乎问答文章社区平台

项目介绍

GoBlog是一个基于 Go 语言开发的仿知乎问答文章社区平台后端系统。该平台支持用户注册、登录、发布文章、评论互动、点赞收藏等核心社交功能,为用户提供一个高质量的内容创作和交流社区。

技术栈

  • 后端框架:Gin Web Framework
  • ORM框架:GORM
  • 数据库:MySQL
  • 缓存:Redis
  • 认证:JWT (JSON Web Token)
  • API文档:Swagger
  • 日志:Logrus
  • 配置管理:YAML
  • 云存储:七牛云(可选)
  • 邮件服务:支持SMTP邮件发送

系统架构

项目采用清晰的分层架构设计,各模块职责明确,便于维护和扩展:

├── api/             # API接口层,处理HTTP请求
├── config/          # 配置相关结构体定义
├── core/            # 核心初始化逻辑
├── global/          # 全局变量定义
├── middleware/      # 中间件
├── models/          # 数据模型定义
├── routers/         # 路由注册
├── service/         # 业务逻辑层
├── plugins/         # 插件(邮件、云存储等)
├── utils/           # 工具函数
└── main.go          # 应用入口

核心功能模块

1. 用户系统

  • 用户注册、登录(支持邮箱登录)
  • 用户信息管理(昵称、头像、个人资料等)
  • 用户角色权限控制(普通用户、管理员等)
  • JWT认证与授权

2. 文章系统

  • 文章发布、编辑、删除
  • 文章分类与标签管理
  • 文章浏览量、点赞数统计
  • 文章搜索与分页查询

3. 评论系统

  • 文章评论发布、回复
  • 评论点赞功能
  • 多级评论支持

4. 收藏系统

  • 文章收藏与取消收藏
  • 用户收藏列表管理

5. 内容管理

  • 菜单管理
  • 广告管理
  • 标签管理

6. 系统设置

  • 网站信息配置
  • 邮箱服务配置
  • 第三方服务集成(如七牛云存储)

配置说明

项目使用 settings.yaml 文件进行配置管理,主要配置项包括:

数据库配置

mysql:
  host: localhost
  port: 3306
  config: charset=utf8mb4&parseTime=True&loc=Local
  db: goblog
  user: root
  password: your_password
  log_level: info

JWT配置

jwt:
  key: your_secret_key
  exp: 7200  # 过期时间(秒)

邮件服务配置

email:
  host: smtp.example.com
  port: 465
  user: your_email@example.com
  password: your_email_password
  defaultFromEmail: GoBlog
  use_ssl: true
  use_tls: true

网站信息配置

site_Info:
  title: GoBlog-AI
  name: GoBlog问答社区
  slogan: 分享知识,连接思想
  version: 1.0.0
  email: contact@example.com

快速开始

前提条件

  • Go 1.24+ 环境
  • MySQL 5.7+ 数据库
  • Redis 服务器(可选)

安装步骤

  1. 克隆项目代码
[git clone https://github.com/yourusername/GoBlog-AI.git](https://github.com/Clyanser/BlogCommunity.git)
cd GoBlog
  1. 安装依赖
go mod download
  1. 创建配置文件 settings.yaml,根据实际情况修改配置

  2. 初始化数据库

go run main.go -db
  1. 创建管理员用户
go run main.go -u admin
  1. 启动服务
go run main.go

服务默认会在 http://127.0.0.1:9090 启动

API文档

项目集成了Swagger自动生成API文档,启动服务后可通过以下地址访问:

http://127.0.0.1:9090/swagger/index.html

项目结构详解

API层 (api/)

包含所有HTTP接口定义,按功能模块划分为不同的子包,如用户API、文章API、评论API等。每个API模块负责处理对应的HTTP请求,并调用Service层进行业务逻辑处理。

模型层 (models/)

定义了系统中所有的数据模型,与数据库表结构一一对应。包括用户模型、文章模型、评论模型等,同时定义了请求和响应结构体。

服务层 (service/)

实现了系统的核心业务逻辑,为API层提供服务支持。包括用户服务、日志服务、图片上传服务等。

路由层 (routers/)

负责注册和管理系统的所有路由,将HTTP请求映射到对应的API处理函数。

中间件 (middleware/)

实现了系统级别的中间件,如JWT认证、日志记录等,用于拦截和处理所有HTTP请求。

工具包 (utils/)

提供了各种通用的工具函数,如密码加密、JWT生成、IP解析等,供系统其他模块使用。

开发指南

代码规范

  • 遵循Go语言标准编码规范
  • 函数和变量命名清晰明了,避免使用过于简化的名称
  • 关键代码添加必要的注释

新增功能流程

  1. models/ 中定义相关数据模型
  2. service/ 中实现业务逻辑
  3. api/ 中定义API接口
  4. routers/ 中注册路由

数据库迁移

项目使用GORM的AutoMigrate功能自动创建和更新数据库表结构。启动时通过 -db 参数触发数据库初始化。

安全注意事项

  • 敏感配置信息(如数据库密码、JWT密钥)应妥善保管,避免泄露
  • 生产环境中建议关闭DEBUG模式
  • 用户密码采用加密存储,禁止明文保存
  • 定期备份数据库,防止数据丢失

部署建议

开发环境

  • 直接使用 go run main.go 启动服务
  • 配置文件设置 env: dev,开启详细日志

生产环境

  • 编译为二进制文件:go build -o GoBlog main.go
  • 使用Systemd或Supervisor管理服务进程
  • 配置文件设置 env: prod,减少日志输出
  • 建议使用Nginx作为反向代理

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages