# nyxt **Repository Path**: palagend/nyxt ## Basic Information - **Project Name**: nyxt - **Description**: No description available - **Primary Language**: Emacs Lisp - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-12-19 - **Last Updated**: 2026-04-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ERP 系统 基于 Go + Gin + GORM + JWT 的企业资源计划系统后端。 ## 技术栈 - **框架**: [Gin](https://github.com/gin-gonic/gin) - Web 框架 - **ORM**: [GORM](https://gorm.io/) - 数据库 ORM - **数据库**: MySQL - **认证**: JWT (JSON Web Token) - **密码加密**: bcrypt - **API 文档**: [Swagger/OpenAPI](https://swagger.io/) + [swaggo](https://github.com/swaggo/swag) ## 项目结构 ``` erp/ ├── config/ # 配置文件 │ └── database.go # 数据库连接配置 ├── controller/ # API 控制器 │ └── user_controller.go # 用户相关接口 ├── middleware/ # 中间件 │ ├── cors.go # 跨域中间件 │ └── jwt.go # JWT 鉴权中间件 ├── model/ # 数据模型 │ └── user.go # 用户模型 ├── router/ # 路由注册 │ ├── router_dev.go # 开发环境路由(含 Swagger) │ └── router_prod.go # 生产环境路由(不含 Swagger) ├── service/ # 业务逻辑 │ └── user_service.go # 用户业务逻辑 ├── utils/ # 工具类 │ ├── jwt.go # JWT 工具 │ └── password.go # 密码加密工具 ├── build.sh # 构建脚本 ├── main.go # 入口文件 ├── go.mod # Go 模块 └── .gitignore # Git 忽略文件 ``` ## 快速开始 ### 环境要求 - Go 1.22+ - MySQL 5.7+ ### 安装依赖 ```bash go mod download ``` ### 环境变量配置 创建 `.env` 文件或在系统中设置以下环境变量: ```bash # 数据库配置 DB_HOST=localhost DB_PORT=3306 DB_USER=root DB_PASSWORD=your_password DB_NAME=erp # JWT 配置 JWT_SECRET=your-secret-key-change-in-production ``` ### 数据库准备 1. 创建数据库: ```sql CREATE DATABASE erp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 2. 程序启动时会自动迁移数据表结构。 ### 启动服务 #### 方式一:使用构建脚本(推荐) ```bash # 查看帮助 ./build.sh help # 开发环境运行(包含 Swagger) ./build.sh run-dev # 生产环境运行(不包含 Swagger) ./build.sh run-prod # 构建开发版本 ./build.sh dev # 构建生产版本 ./build.sh prod # 生成 Swagger 文档 ./build.sh swag # 清理构建产物 ./build.sh clean ``` #### 方式二:直接使用 go 命令 ```bash # 开发环境(包含 Swagger) swag init go run -tags dev main.go # 生产环境(不包含 Swagger) go run -tags prod main.go ``` 服务默认运行在 `http://localhost:8080` ## API 文档 ### 认证接口 #### 用户注册 ```http POST /api/auth/register Content-Type: application/json { "username": "testuser", "password": "password123", "email": "test@example.com", "phone": "13800138000" } ``` **响应:** ```json { "code": 200, "message": "Registration successful", "data": { "id": 1, "username": "testuser", "email": "test@example.com", "phone": "13800138000", "status": 1, "created_at": "2024-01-01T00:00:00Z", "updated_at": "2024-01-01T00:00:00Z" } } ``` #### 用户登录 ```http POST /api/auth/login Content-Type: application/json { "username": "testuser", "password": "password123" } ``` **响应:** ```json { "code": 200, "message": "Login successful", "data": { "token": "eyJhbGciOiJIUzI1NiIs...", "user": { "id": 1, "username": "testuser", "email": "test@example.com", "phone": "13800138000", "status": 1, "created_at": "2024-01-01T00:00:00Z", "updated_at": "2024-01-01T00:00:00Z" } } } ``` ### 需要鉴权的接口 需要在请求头中携带 Token: ```http Authorization: Bearer ``` #### 获取当前用户信息 ```http GET /api/profile Authorization: Bearer eyJhbGciOiJIUzI1NiIs... ``` **响应:** ```json { "code": 200, "message": "Success", "data": { "user_id": 1, "username": "testuser" } } ``` ## 错误码说明 | 状态码 | 说明 | |--------|------| | 200 | 请求成功 | | 400 | 请求参数错误 | | 401 | 未授权(Token 无效或过期) | | 500 | 服务器内部错误 | ## Swagger API 文档 项目已集成 Swagger UI,可以可视化查看和测试 API。 ### 安装 swag 工具 ```bash go install github.com/swaggo/swag/cmd/swag@latest ``` ### 生成 Swagger 文档 在项目根目录执行: ```bash swag init ``` 这会生成 `docs/` 目录,包含 Swagger 文档文件。 ### 访问 Swagger UI 启动服务后访问: ``` http://localhost:8080/swagger/index.html ``` ### 使用 Swagger 测试接口 1. **注册/登录**: 无需认证,直接调用 `/api/auth/register` 或 `/api/auth/login` 2. **需要认证的接口**: - 先点击右上角的 "Authorize" 按钮 - 输入 `Bearer {your-jwt-token}` - 点击 "Authorize" 保存 - 然后可以调用受保护的接口 ### Swagger 注解说明 在代码中使用特定格式的注释来描述 API: ```go // @Summary 接口简要说明 // @Description 接口详细描述 // @Tags 分类标签 // @Accept json // @Produce json // @Param 参数名 位置 类型 是否必填 "描述" // @Success 状态码 {类型} 返回类型 "描述" // @Failure 状态码 {类型} 返回类型 "描述" // @Router 路径 [方法] // @Security Bearer // 表示需要认证 ``` ## 开发计划 - [x] 数据库连接配置 - [x] JWT 登录认证 - [x] 路由鉴权中间件 - [x] API 文档(Swagger) - [ ] 用户管理 CRUD - [ ] 权限管理(RBAC) - [ ] 日志记录 ## 贡献指南 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 创建 Pull Request ## 许可证 [MIT](LICENSE)