# EduManager **Repository Path**: luonannet/edu-manager ## Basic Information - **Project Name**: EduManager - **Description**: No description available - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-02-23 - **Last Updated**: 2025-12-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # EduManager 教育管理系统 ## 项目简介 EduManager 是一个基于 Go 语言和 Beego 框架开发的教育管理类后端服务系统,主要用于支持教育平台中的用户管理、内容发布、互动评论等功能。 ## 技术栈 - **后端框架**: Beego v2.1.0 - **编程语言**: Go 1.23 - **数据库**: MySQL 5.7+ - **缓存**: Redis 6.0+ - **认证**: JWT - **密码加密**: bcrypt - **文档**: Swagger ## 核心功能 - 用户管理(注册、登录、权限控制) - 部门管理 - 问题与回答系统 - 成就系统(含评论) - 商品管理 - 日志记录与审计 - 文件上传与处理 ## 项目结构 ``` EduManager/ ├── conf/ # 配置文件 │ ├── app.conf # 应用配置 │ └── database.sql # 数据库结构 ├── controllers/ # 控制器 │ ├── auth.go │ ├── health.go # 健康检查 │ ├── file.go │ └── t_*.go # 业务控制器 ├── models/ # 数据模型 │ ├── deepseek.go │ ├── user.go │ └── t_*.go # 业务模型 ├── routers/ # 路由配置 │ ├── router.go │ └── commentsRouter.go ├── utils/ # 工具类 │ ├── config.go # 配置管理 │ ├── errors.go # 错误处理 │ ├── logger.go # 日志系统 │ ├── middleware.go # 中间件 │ ├── password.go # 密码加密 │ ├── redis.go # Redis工具 │ ├── response.go # 响应工具 │ └── validator.go # 输入验证 ├── swagger/ # API文档 ├── logs/ # 日志文件 ├── upload/ # 上传文件 ├── main.go # 程序入口 ├── go.mod # 依赖管理 └── README.md # 项目文档 ``` ## 快速开始 ### 环境要求 - Go 1.23+ - MySQL 5.7+ - Redis 6.0+ ### 安装依赖 ```bash go mod download ``` ### 配置数据库 1. 创建数据库: ```sql CREATE DATABASE EduManager; ``` 2. 导入数据结构: ```bash mysql -u root -p EduManager < conf/database.sql ``` ### 配置应用 编辑 `conf/app.conf` 文件,配置数据库和Redis连接信息: ```ini # 数据库配置 sqlconn = root:password@tcp(127.0.0.1:3306)/EduManager?charset=utf8&parseTime=true&loc=Local # Redis配置 redisHost = 127.0.0.1 redisPort = 6379 redisPswd = redisDB = 0 # JWT配置(生产环境请修改) jwtSecret = your_super_secure_jwt_secret_key_here_change_this_in_production # 文件上传目录 uploadDir = ./upload/ ``` ### 启动应用 ```bash go run main.go ``` 应用将在 http://localhost:8080 启动 ### API 文档 启动应用后,访问 http://localhost:8080/swagger 查看完整的API文档。 ## 安全特性 ### 认证与授权 - JWT token 认证 - 角色权限控制 - 安全的密码存储(bcrypt) ### 安全防护 - SQL注入防护 - XSS攻击防护 - CSRF保护 - 请求限流 - 安全头设置 ### 输入验证 - 邮箱格式验证 - 手机号验证 - 学号格式验证 - 密码强度验证 - 文件上传验证 ## 性能优化 ### 缓存策略 - Redis缓存用户信息 - 部门数据缓存 - 模板数据缓存 - 缓存过期时间管理 ### 数据库优化 - 连接池配置 - 查询优化 - 参数化查询 ## 监控与日志 ### 日志系统 - 结构化日志记录 - 日志级别控制 - 文件日志轮转 - 用户操作审计 ### 健康检查 - 应用健康状态 - 数据库连接检查 - Redis连接检查 访问:`GET /health` ## 开发指南 ### 添加新的API接口 1. 在 `controllers/` 下创建控制器 2. 在 `models/` 下创建数据模型 3. 在 `routers/router.go` 中注册路由 4. 添加Swagger注释 5. 编写单元测试 ### 错误处理 使用统一的错误处理系统: ```go // 返回成功响应 utils.SuccessWithData(data) // 返回错误响应 utils.ErrorResponse(utils.ErrUserNotFound) // 包装数据库错误 utils.WrapDatabaseError(err, "用户查询失败") ``` ### 输入验证 ```go validator := utils.NewInputValidator() // 验证邮箱 if !validator.ValidateEmail(email) { return utils.ErrorResponse(utils.ErrValidationFail) } // 清理输入 cleanInput := validator.SanitizeString(input) ``` ### 中间件使用 ```go // 获取当前用户 user, err := utils.GetCurrentUser(c.Ctx) if err != nil { c.Data["json"] = utils.ErrorResponse(err) c.ServeJSON() return } // 检查权限 if err := utils.RequireRole(c.Ctx, 1); err != nil { c.Data["json"] = utils.ErrorResponse(err) c.ServeJSON() return } ``` ## 测试 ### 运行单元测试 ```bash # 运行所有测试 go test ./... # 运行特定包的测试 go test ./utils/... # 显示详细输出 go test -v ./utils/... ``` ### 测试覆盖率 ```bash go test -cover ./utils/... ``` ## 部署 ### Docker 部署 ```bash # 构建镜像 docker build -t edumanager . # 运行容器 docker run -d -p 8080:8080 --name edumanager_container edumanager ``` ### Linux 部署 ```bash # 编译 ./linux.bat # 在Windows上交叉编译 # 或直接编译 GOOS=linux GOARCH=amd64 go build -o EduAPI main.go # 运行 ./EduAPI ``` ## 配置说明 ### 环境变量 生产环境建议使用环境变量覆盖敏感配置: ```bash export JWT_SECRET="your_production_jwt_secret" export DB_PASSWORD="your_db_password" export REDIS_PASSWORD="your_redis_password" ``` ### 日志配置 ```ini enableLogging = true logLevel = info logPath = ./logs/ ``` 日志级别:`debug`, `info`, `warn`, `error`, `fatal` ### 限流配置 ```ini rateLimitEnabled = true rateLimitRequests = 100 rateLimitWindow = 60 ``` ## 故障排除 ### 常见问题 1. **数据库连接失败** - 检查数据库配置 - 确认数据库服务运行状态 - 验证用户权限 2. **Redis连接失败** - 检查Redis服务状态 - 验证连接参数 - 检查网络连接 3. **JWT认证失败** - 检查JWT密钥配置 - 验证token有效期 - 确认请求头格式 ### 日志查看 ```bash # 查看应用日志 tail -f logs/app-$(date +%Y-%m-%d).log # 查看错误日志 grep ERROR logs/app-$(date +%Y-%m-%d).log ``` ## 贡献指南 1. Fork 项目 2. 创建功能分支 3. 提交代码 4. 编写测试 5. 提交 Pull Request ## 许可证 本项目采用 MIT 许可证。 ## 联系方式 如有问题或建议,请通过以下方式联系: - Email: luonancom@qq.com - GitHub Issues: [提交问题](https://github.com/your-repo/EduManager/issues) ## 版本历史 ### v1.0.0 (当前版本) - 基础用户管理功能 - JWT认证系统 - 安全优化 - 性能优化 - 完整测试覆盖