# shop **Repository Path**: liu__wenbin/shop ## Basic Information - **Project Name**: shop - **Description**: 这是一个涵盖商品购物秒杀的项目,专注于优化秒杀逻辑,提升QPS抗压。 - **Primary Language**: Go - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2025-09-15 - **Last Updated**: 2025-12-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: 日更中 ## README 这是一个基于 Golang 的微服务电商平台项目,主要功能包括商品管理、用户注册登录、短信发送、订单处理以及秒杀活动等。项目使用了 Gin 框架、gRPC、MySQL、Redis、RabbitMQ 等技术栈,具备良好的可扩展性和高并发处理能力。 --- ## 📦 项目结构 - **api/**: 提供 HTTP 接口服务,使用 Gin 框架处理请求。 - `handler/`: 接口逻辑处理函数。 - `request/`: 请求参数结构体定义。 - `middleware/`: 中间件,如 JWT 鉴权。 - `router/`: 路由注册。 - `main.go`: 启动 HTTP 服务。 - **common/**: 公共模块。 - `config/`: 配置文件加载。 - `global/`: 全局变量,如数据库连接、Redis 客户端等。 - `inits/`: 初始化模块,包括 MySQL、Redis、Nacos、RabbitMQ 等。 - `model/`: 数据库模型定义。 - `pkg/`: 工具类,如 JWT、MD5、支付宝支付、短信发送等。 - `untils/`: 业务工具类,如分布式锁、消息队列、秒杀库存处理等。 - **mq_pay/**: RabbitMQ 消费服务,用于处理支付异步任务。 - **shop_grpc/**: 商品服务 gRPC 接口。 - `internal/handler/`: gRPC 接口实现。 - `main.go`: 启动 gRPC 服务。 - `proto/`: gRPC 接口定义及生成代码。 - **user_grpc/**: 用户服务 gRPC 接口。 - `internal/handler/`: gRPC 接口实现。 - `main.go`: 启动 gRPC 服务。 - `proto/`: gRPC 接口定义及生成代码。 --- ## 🚀 功能模块 ### 1. 用户模块 - 注册、登录、获取当前用户信息。 - 使用 JWT 进行身份验证。 - 短信验证码发送。 ### 2. 商品模块 - 查询商品信息。 - 秒杀商品创建与库存管理。 - 使用 Redis 缓存商品信息,使用分布式锁控制库存。 ### 3. 订单模块 - 创建订单。 - 支付订单(支持支付宝)。 - 使用 RabbitMQ 异步处理支付结果。 ### 4. 秒杀模块 - 秒杀商品创建、库存控制。 - 使用 Redis 预减库存,防止超卖。 - 异步下单,使用 RabbitMQ 解耦。 --- ## 🛠️ 技术栈 - **Golang**: 高性能后端语言。 - **Gin**: 快速的 HTTP 框架。 - **gRPC**: 微服务间通信。 - **MySQL**: 数据持久化。 - **Redis**: 缓存、分布式锁、预减库存。 - **RabbitMQ**: 异步消息队列。 - **JWT**: 用户身份认证。 - **Nacos**: 配置中心与服务发现。 - **Protobuf**: gRPC 接口定义。 --- ## 📝 安装与运行 ### 1. 安装依赖 ```bash go mod tidy ``` ### 2. 配置文件 修改 `dev.yaml` 文件,配置数据库、Redis、短信服务、Nacos、RabbitMQ 等信息。 ### 3. 启动服务 #### 启动 HTTP 服务 ```bash cd api go run main.go ``` #### 启动 gRPC 商品服务 ```bash cd shop_grpc go run main.go ``` #### 启动 gRPC 用户服务 ```bash cd user_grpc go run main.go ``` #### 启动 RabbitMQ 消费服务 ```bash cd mq_pay go run main.go ``` --- ## 🧪 测试与部署 - 使用 Postman 或 curl 测试接口。 - 使用 Docker 部署服务。 - 使用 Kubernetes 进行容器编排。 --- ## 🤝 贡献指南 欢迎提交 PR 和 Issue,贡献代码请遵循以下步骤: 1. Fork 项目。 2. 创建新分支。 3. 提交代码。 4. 创建 Pull Request。 --- ## 📄 许可证 本项目采用 MIT License,请查看 LICENSE 文件。