# go-mall **Repository Path**: daiting-wei/go-mall ## Basic Information - **Project Name**: go-mall - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-10-20 - **Last Updated**: 2025-11-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # go-mall

Go version Gin Framework MySQL Redis JWT MIT License

一个基于 Go 语言实现的高性能电商系统,采用分层架构设计,提供完整的前后端分离电商解决方案。

## 📊 项目概览 Go-Mall是一个现代化的电子商务系统后端,采用Go语言生态中主流的技术栈,实现了完整的电商业务流程。系统具备高性能、高可扩展性、安全可靠等特点。 > 🔗 **API测试平台**: [Apifox文档中心](https://b77dpmzpt4.apifox.cn/) ## 🚀 项目亮点 - **高性能架构**: 采用Go语言开发,结合Gin框架提供高并发处理能力 - **完整电商流程**: 涵盖商品浏览、购物车、订单、支付等核心电商功能 - **安全认证体系**: 基于JWT的身份验证,保障系统和用户数据安全 - **数据一致性**: 事务处理确保订单和支付等关键业务操作的原子性 - **缓存优化**: 集成Redis缓存,显著提升系统响应速度 - **RESTful API设计**: 遵循RESTful规范,提供规范的API接口 - **完善文档**: 集成Swagger自动生成API文档,便于接口调试 - **模块化设计**: 清晰的分层架构,代码结构合理,易于维护和扩展 ## 📋 功能特性 ### 核心功能模块 - **商品管理**: 支持商品浏览、详情查看、分类筛选、图片展示等功能 - **购物车系统**: 商品添加、数量调整、批量操作、价格计算 - **订单系统**: 订单创建、状态管理、订单查询、历史记录 - **支付系统**: 订单支付、交易安全保障、金额加密处理 - **用户系统**: 用户注册、登录、信息管理、头像上传、邮箱验证 - **收藏系统**: 商品收藏、收藏列表、取消收藏 - **地址管理**: 收货地址增删改查、默认地址设置 ### 技术支持功能 - **缓存策略**: Redis缓存热点数据,减轻数据库压力 - **权限控制**: 基于JWT的身份认证和授权 - **参数验证**: 请求参数严格验证,提高系统稳定性 - **日志记录**: 完善的日志系统,便于问题追踪和性能监控 - **安全加密**: 密码bcrypt加密存储,敏感数据AES加密传输 ## 🛠 技术栈 - **后端语言**: Go - **Web框架**: Gin - **ORM框架**: GORM - **数据库**: MySQL - **缓存系统**: Redis - **认证方案**: JWT (JSON Web Token) - **API文档**: Swagger - **加密算法**: bcrypt, AES - **日志组件**: 自定义日志系统 ## 🏗 系统架构 系统采用清晰的分层架构,遵循关注点分离原则: - **API层**: 处理HTTP请求和响应,参数验证,路由管理 - **服务层**: 实现核心业务逻辑,协调各模块功能 - **数据访问层**: 封装数据库操作,提供数据持久化能力 - **模型层**: 定义数据结构,数据库表映射 - **序列化层**: 处理数据格式转换,请求/响应数据格式化 - **中间件层**: 提供认证、跨域、日志等通用功能 - **工具层**: 提供加密、JWT、日志等通用工具函数 ## 📁 目录结构 ``` go-mall/ ├── api/ # API接口层,处理HTTP请求响应 │ └── v1/ # API v1版本 ├── cache/ # Redis缓存相关代码 ├── cmd/ # 程序入口目录 │ └── main.go # 主程序入口 ├── conf/ # 配置文件目录 │ ├── config.go # 配置加载 │ └── config.ini # 配置文件 ├── dao/ # 数据访问层 ├── docs/ # Swagger文档 ├── middleware/ # 中间件 │ ├── cors.go # CORS跨域中间件 │ └── jwt.go # JWT认证中间件 ├── model/ # 数据模型层 ├── pkg/ # 工具包 │ ├── e/ # 错误码定义 │ └── util/ # 工具函数 ├── routes/ # 路由配置 ├── serializer/ # 数据序列化层 ├── service/ # 业务逻辑层 ├── static/ # 静态资源 │ └── imgs/ # 图片资源 ├── go.mod # Go模块配置 └── go.sum # 依赖校验文件 ``` ## 🔧 安装与运行 ### 环境要求 - Go 1.16+ - MySQL 5.7+ - Redis 6.0+ ### 安装步骤 1. **克隆仓库**: ```bash git clone https://gitee.com/daiting-wei/go-mall.git cd go-mall ``` 2. **安装依赖**: ```bash go mod tidy ``` 3. **配置环境**: 修改 `conf/config.ini` 文件,配置数据库和Redis连接信息: ```ini # 数据库配置 db_host = localhost db_port = 3306 db_user = root db_pass_word = yourpassword db_name = go_mall # Redis配置 redis_addr = localhost:6379 redis_pw = redis_db_name = 0 ``` 4. **初始化数据库**: 项目启动时会自动运行数据库迁移脚本,创建必要的表结构。 5. **启动服务**: ```bash go run cmd/main.go ``` 或使用启动脚本: ```bash sh start_with_swagger.sh ``` ## 📖 API文档 启动服务后,可以通过以下方式访问API文档: - **Swagger文档**:访问 `http://localhost:8080/swagger/index.html` - **Apifox文档**:访问 [Apifox文档中心](https://b77dpmzpt4.apifox.cn/) ## 🧪 测试指南 ### 单元测试 运行项目中的测试用例: ```bash go test ./... ``` ### 接口测试 可以使用以下方式测试API接口: 1. **Swagger UI**:通过Web界面直接测试 2. **Apifox**:使用Apifox平台进行接口测试和管理 3. **Postman/Curl**:使用标准HTTP客户端工具测试 ## 🛡 安全措施 - 密码采用bcrypt算法加密存储 - 使用JWT进行用户身份验证 - 敏感数据传输加密 - 参数严格验证,防止SQL注入和XSS攻击 - CORS策略配置,保障跨域安全 ## 🚦 维护与更新 项目持续维护中,如有问题或建议,欢迎提交Issue或Pull Request。 ## 🤝 贡献指南 1. Fork 本项目 2. 创建您的特性分支 (`git checkout -b feature/amazing-feature`) 3. 提交您的更改 (`git commit -m 'Add some amazing feature'`) 4. 推送到分支 (`git push origin feature/amazing-feature`) 5. 开启一个Pull Request ## 💡 开发建议 - 遵循Go语言编码规范 - 保持代码简洁清晰 - 为关键函数添加注释 - 编写单元测试 ## 📜 许可证 本项目采用 MIT 许可证,详情请查看 [LICENSE](LICENSE) 文件。