一个基于 Gin 框架的电商平台后端 API 服务,使用 GORM 处理关系型数据库业务,MongoDB 记录用户行为。
- ✅ 用户认证系统 - JWT Token 认证,支持用户和管理员两种身份
- ✅ 用户管理 - 注册、登录、个人信息管理、密码加密存储
- ✅ 产品管理 - 商品增删改查、分类管理、库存管理
- ✅ 订单系统 - 订单创建、状态跟踪、订单项管理
- ✅ 收藏系统 - 用户收藏商品管理
- ✅ 评论系统 - 商品评论、用户评论查询
- ✅ 行为追踪 - 用户行为监控和数据分析(MongoDB)
- ✅ 数据验证 - 请求参数验证
- ✅ 跨域支持 - CORS 中间件支持
| 技术 | 版本 | 说明 |
|---|---|---|
| Go | 1.21+ | 编程语言 |
| Gin | v1.9.1 | Web 框架 |
| GORM | v1.25.4 | ORM 数据库操作 |
| MySQL | 5.7+ | 关系型数据库 |
| MongoDB | 4.0+ | NoSQL 数据库(用户行为) |
| JWT | v5.0.0 | Token 认证 |
| bcryptjs | - | 密码加密 |
shop/
├── config/ # 配置管理
│ └── config.go # 应用配置(数据库、JWT、服务器)
├── db/ # 数据库初始化
│ └── db.go # MySQL 和 MongoDB 连接
├── models/ # 数据模型
│ └── models.go # GORM 模型定义与迁移
├── middleware/ # 中间件
│ └── auth.go # JWT 认证中间件
├── handlers/ # 接口处理器(业务逻辑)
│ ├── auth.go # 认证接口(登录、注册)
│ ├── user.go # 用户接口(收藏、评论、订单等)
│ ├── admin.go # 管理员接口(用户、产品、分类、订单管理)
│ └── product.go # 产品接口(列表、搜索、评论等)
├── routes/ # 路由定义
│ └── routes.go # 所有路由注册
├── utils/ # 工具函数
│ └── utils.go # 验证、加密等实用函数
├── main.go # 应用入口
├── go.mod # Go 模块定义
└── README.md # 项目说明(本文件)
- Go 1.21 或更高版本
- MySQL 5.7 或更高版本
- MongoDB 4.0+(可选)
-
克隆项目
git clone https://github.com/hongch666/shop.git cd shop git checkout backend/go -
下载依赖
go mod download
-
配置环境
创建
.env文件(可选):SERVER_HOST=0.0.0.0 SERVER_PORT=:8088 MYSQL_DSN=root:password@tcp(127.0.0.1:3306)/shop?charset=utf8mb4&parseTime=True&loc=Local MONGODB_URI=mongodb://localhost:27017 MONGODB_NAME=shop JWT_SECRET_USER=hjk666 JWT_SECRET_ADMIN=hongch666
-
初始化数据库
# 创建 MySQL 数据库 mysql -u root -p -e "CREATE DATABASE shop CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
-
启动服务
go run main.go
服务将运行在
http://0.0.0.0:8088
POST /login/register- 用户注册POST /login/user- 用户登录POST /login/admin- 管理员登录
GET /user/info- 获取用户信息PUT /user/info- 更新用户信息GET /user/collections- 获取收藏列表POST /user/collections- 添加收藏GET /user/comments- 获取我的评论POST /user/comments- 创建评论GET /user/orders- 获取订单POST /user/orders- 创建订单
GET /product- 获取产品列表GET /product/:id- 获取产品详情GET /product/category/:id- 按分类获取产品
GET /category- 获取分类列表GET /category/:id- 获取分类详情
GET /admin/home- 管理员首页统计GET /admin/users- 获取用户列表POST /admin/products- 创建产品PUT /admin/products/:id- 更新产品PUT /admin/orders/:id- 更新订单状态GET /admin/behaviors- 获取用户行为
{
"code": 0,
"msg": "成功",
"data": {}
}{
"code": 1,
"msg": "错误信息"
}- 用户 Token 使用
JwtSecretKeyUser密钥加密 - 管理员 Token 使用
JwtSecretKeyAdmin密钥加密 - 过期时间 默认 10 小时
Authorization: Bearer <token>MIT License
其他分支:
main- 主分支front- 前端 Vue.js 项目backend/node- Node.js 后端版本