# wmsgo **Repository Path**: cng1985/wmsgo ## Basic Information - **Project Name**: wmsgo - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-03 - **Last Updated**: 2026-01-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SampleGo 一个基于 Go 语言构建的现代化 Web 应用框架,使用 Uber FX 依赖注入框架和 Gin Web 框架,提供用户管理、数据库操作、文件上传等核心功能。 ## 特性 - 🚀 **现代化架构**:基于 Uber FX 的依赖注入框架,模块化设计 - 🌐 **Web 框架**:使用 Gin 高性能 HTTP Web 框架 - 🗄️ **数据库支持**:集成 GORM 和 SQLX,支持 MySQL 数据库 - 📝 **结构化日志**:使用 Zap 高性能结构化日志库 - 🔐 **用户认证**:支持 Session 和 JWT 认证 - 🛡️ **安全特性**:密码加密、登录失败锁定、密码复杂度验证 - 📁 **文件上传**:支持文件上传和静态资源服务 - 🤖 **AI 集成**:支持 OpenAI 协议 API 集成 - ⚙️ **配置管理**:灵活的配置文件和环境变量支持 ## 技术栈 - **Go**: 1.25.5+ - **依赖注入**: Uber FX - **Web 框架**: Gin - **数据库 ORM**: GORM - **数据库驱动**: SQLX, MySQL Driver - **日志库**: Zap - **认证**: JWT, Gorilla Sessions - **配置管理**: godotenv ## 项目结构 ``` samplego/ ├── main.go # 应用入口 ├── env.example # 环境变量示例文件 ├── internal/ │ ├── common/ # 通用组件 │ │ ├── model/ # 基础模型 │ │ ├── request/ # 请求结构 │ │ └── response/ # 响应结构 │ ├── controller/ # 控制器层 │ │ └── user/ # 用户控制器 │ ├── module/ # 功能模块 │ │ ├── database_module.go │ │ ├── server_module.go │ │ └── user_module.go │ ├── resources/ # 资源层 │ │ └── user/ # 用户资源 │ ├── shared/ # 共享组件 │ │ ├── config/ # 配置管理 │ │ ├── database/ # 数据库连接 │ │ ├── logger/ # 日志配置 │ │ ├── router/ # 路由配置 │ │ ├── response/ # 响应处理 │ │ └── session/ # Session 管理 │ └── utils/ # 工具函数 │ ├── jwt.go │ ├── password_utils.go │ └── ... └── README.md ``` ## 快速开始 ### 环境要求 - Go 1.25.5 或更高版本 - MySQL 5.7+ 或 MySQL 8.0+ - Git ### 安装步骤 1. **克隆项目** ```bash git clone cd samplego ``` 2. **安装依赖** ```bash go mod download ``` 3. **配置环境变量** 复制 `env.example` 文件为 `.env` 并根据实际情况修改配置: ```bash cp env.example .env ``` 编辑 `.env` 文件,配置数据库连接等信息: ```env # 服务器配置 PORT=8080 GIN_MODE=debug # 数据库配置 DB_HOST=localhost DB_PORT=3306 DB_USER=root DB_PASSWORD=your_password DB_NAME=cmsgo DB_CHARSET=utf8mb4 AUTO_MIGRATE=true # Session配置 SESSION_SECRET=your-secret-key-here SESSION_MAX_AGE=86400 # 其他配置... ``` 4. **创建数据库** 在 MySQL 中创建数据库: ```sql CREATE DATABASE cmsgo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 5. **运行应用** ```bash go run main.go ``` 或者编译后运行: ```bash go build -o samplego ./samplego ``` 应用启动后,默认监听端口 8080。你可以访问: - 健康检查:http://localhost:8080/health - API 基础路径:http://localhost:8080/api/v1 ## 配置说明 主要配置项说明: ### 服务器配置 - `PORT`: 服务器监听端口(默认:8080) - `GIN_MODE`: Gin 运行模式(debug/release) ### 数据库配置 - `DB_HOST`: 数据库主机地址 - `DB_PORT`: 数据库端口 - `DB_USER`: 数据库用户名 - `DB_PASSWORD`: 数据库密码 - `DB_NAME`: 数据库名称 - `DB_CHARSET`: 数据库字符集 - `AUTO_MIGRATE`: 是否自动执行数据库迁移(建表) ### 安全配置 - `SESSION_SECRET`: Session 加密密钥(生产环境请修改) - `SESSION_MAX_AGE`: Session 有效期(秒) - `LOGIN_MAX_FAILED_ATTEMPTS`: 最大登录失败次数 - `LOGIN_LOCKOUT_MINUTES`: 账户锁定时间(分钟) - `PASSWORD_MIN_LENGTH`: 密码最小长度 - `PASSWORD_REQUIRE_UPPER`: 是否要求大写字母 - `PASSWORD_REQUIRE_LOWER`: 是否要求小写字母 - `PASSWORD_REQUIRE_NUMBER`: 是否要求数字 - `PASSWORD_REQUIRE_SPECIAL`: 是否要求特殊字符 ### 文件上传配置 - `UPLOAD_PATH`: 文件上传存储路径 - `UPLOAD_URL`: 文件访问 URL 路径 - `MAX_FILE_SIZE`: 最大文件大小(字节) ### AI 配置 - `AI_SERVICE_URL`: AI 服务地址(支持 OpenAI 协议) - `AI_MODEL`: AI 模型名称 - `AI_API_KEY`: AI API 密钥 - `AI_TEMPERATURE`: AI 温度参数 - `AI_MAX_TOKENS`: AI 最大 token 数 更多配置项请参考 `env.example` 文件。 ## API 接口 ### 健康检查 ```http GET /health POST /health ``` ### 用户相关接口 - `POST /api/v1/auth/login` - 用户登录 - `POST /api/v1/auth/register` - 用户注册 更多 API 接口信息,请访问:http://localhost:8080/api/v1 ## 开发指南 ### 添加新模块 1. 在 `internal/module/` 目录下创建模块文件 2. 使用 `fx.Module` 定义模块 3. 在 `main.go` 中引入模块 示例: ```go // internal/module/example_module.go package module import "go.uber.org/fx" var ExampleModule = fx.Module("example", fx.Provide( // 提供依赖 ), fx.Invoke( // 初始化逻辑 ), ) ``` ### 数据库迁移 项目支持自动数据库迁移。设置 `AUTO_MIGRATE=true` 后,应用启动时会自动执行数据库迁移。 ### 日志使用 项目使用 Zap 日志库,通过依赖注入获取 logger: ```go import "go.uber.org/zap" func YourFunction(logger *zap.Logger) { logger.Info("信息日志") logger.Error("错误日志", zap.Error(err)) } ``` ## 构建和部署 ### 构建 ```bash go build -o samplego ``` ### 交叉编译 Linux 平台: ```bash GOOS=linux GOARCH=amd64 go build -o samplego-linux ``` Windows 平台: ```bash GOOS=windows GOARCH=amd64 go build -o samplego.exe ``` ### 生产环境建议 1. 设置 `GIN_MODE=release` 2. 修改 `SESSION_SECRET` 为强随机密钥 3. 使用环境变量或配置中心管理敏感信息 4. 配置 HTTPS 5. 设置适当的日志级别 6. 配置数据库连接池参数 ## 贡献 欢迎提交 Issue 和 Pull Request! ## 许可证 [在此添加许可证信息] ## 联系方式 [在此添加联系方式]