项目描述: 基于Go语言开发的社区论坛后端系统,支持用户注册登录、帖子发布管理、评论互动等核心功能
技术栈:
- 后端框架: Gin Web框架
- 数据库: MySQL + GORM ORM框架
- 缓存: Redis (用户会话、验证码、热门帖子排行、浏览量统计)
- 认证授权: JWT Token认证
- 文件存储: 七牛云OSS对象存储
- 邮件服务: SMTP邮件发送服务
- 定时任务: Cron定时任务调度
- 配置管理: Viper配置文件管理
- 日志系统: Zap高性能日志框架
- 热重载: Air实时编译工具
- 密码加密: bcrypt密码哈希
核心功能实现:
- 邮箱验证注册: 实现邮箱验证码注册机制,防止恶意注册
- 多方式登录: 支持邮箱/用户名登录,提升用户体验
- 密码重置: 基于邮箱验证码的安全密码重置流程
- JWT认证: 无状态Token认证,支持用户会话管理
- 中间件鉴权: 实现JWT中间件进行路由级别的权限控制
- 帖子CRUD: 完整的帖子创建、读取、更新、删除功能
- Markdown支持: 帖子内容支持Markdown格式
- 标签系统: 多对多关联的标签分类功能
- 评论系统: 支持多级评论和回复功能
- 互动功能: 点赞、收藏功能,支持状态切换
- Redis缓存策略:
- 验证码缓存(10分钟过期)
- 发送冷却时间控制(防止频繁发送)
- 帖子浏览量实时统计
- 热门帖子排行榜(ZSET数据结构)
- 缓存同步: 定时任务将Redis数据同步到MySQL,保证数据一致性
- 头像上传: 集成七牛云OSS,支持用户头像上传
- 文件类型验证: 严格的文件格式和大小限制
- UUID文件命名: 防止文件名冲突
- 分层架构: Controller-Service-DAO三层架构,职责分离
- 统一错误处理: 自定义错误码和错误处理中间件
- 统一响应格式: 标准化API响应结构
- 参数验证: 使用Gin的数据绑定和验证功能
- CORS支持: 跨域请求处理
- 用户表: 完整的用户信息管理,包含隐私设置
- 帖子表: 支持内容、统计数据、关联关系
- 标签表: 多对多关联设计
- 评论表: 支持层级评论结构
- 关联表: 用户点赞、收藏关系表
- 异步处理: 浏览量统计和热门度计算采用异步处理
- 批量操作: 定时任务批量同步缓存数据
- 连接池: Redis连接池优化
- 索引优化: 数据库索引设计
- 定时任务: 每2分钟同步Redis浏览量数据到MySQL
- 日志记录: 完整的请求日志和错误日志
- 配置管理: 环境配置分离,支持热重载
- 优雅关闭: 服务优雅停机处理
项目亮点:
- 高并发处理: Redis缓存 + 异步处理,支持高并发访问
- 数据一致性: 缓存与数据库的最终一致性保证
- 安全性: JWT认证 + 密码加密 + 参数验证
- 可扩展性: 模块化设计,易于功能扩展
- 代码质量: 清晰的项目结构,完善的错误处理
- 依赖注入: 基于Google Wire的完整依赖注入架构
- 🤖 AI内容审核: 集成OpenAI API实现智能内容审核,自动检测违规内容
- 🚫 用户禁言机制: 基于违规次数的渐进式惩罚:首次警告、1天、7天、30天封禁
- 📊 违规记录: 完整的违规记录系统,包括违规次数、封禁时间和原因
- ⚡ 自动解封: 封禁到期后自动解封,无需人工干预
- 🔍 实时检测: 发布前自动进行内容审核,实时反馈审核结果
- 📝 Zap日志框架: 集成高性能Zap日志系统,提供结构化日志输出
- 🔄 日志中间件: 实现基于Zap的HTTP请求日志记录
- 💉 依赖注入: 日志系统完全集成到Wire依赖注入架构
- 📊 日志分类: 支持不同级别日志和日志文件切割
- 🔐 Casbin集成: 引入Casbin RBAC权限管理框架,实现细粒度权限控制
- 🛡️ 权限中间件: 提供RequirePermission、RequireAdmin、RequireRole等中间件
- 👤 角色管理: 支持admin和user角色,实现资源级别的权限控制
- 🔄 权限持久化: 权限数据存储在数据库中,支持动态管理
- 🔧 Wire依赖注入: 引入Google Wire框架,实现完整的依赖注入架构
- 🏗️ 架构重构: 将所有层级从全局变量改为依赖注入模式
- ⚙️ 配置管理: 配置对象通过依赖注入传递,移除全局配置变量
- 🔒 中间件改造: JWT等中间件完全基于依赖注入,提升可测试性和可维护性