Skip to content

BeroKiTeer/MyGoMall

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛍️ MyGoMall

🌟 简介

MyGoMall 是一个基于分布式微服务架构的电商平台,提供用户认证、商品管理、购物车、订单、支付等功能。

详情见:https://taix7w1al12.feishu.cn/wiki/XXupwJXGriFIsJkWAmbcL2N9nQb#share-KfUAd7n74oRRAuxT5bWcauVjnTt

✨ 核心特性

  • 🔐 认证系统 - 基于JWT的用户注册和登录
  • 📦 商品管理 - 完整的商品目录系统
  • 🛒 购物车 - 强大的购物车功能
  • 📋 订单处理 - 订单管理和追踪
  • 💳 支付集成 - 支付网关集成就绪
  • 🏗️ 清晰架构 - 行业标准的项目结构
  • 📝 详细日志 - 全面的日志系统
  • ⚙️ 易于配置 - 基于YAML的配置管理

Note

  • 需要 Go >= 1.18
  • 需要 MySQL >= 8.0
  • 推荐 Redis >= 6.0

📚 目录

🛠️ 技术栈

Go
Go
MySQL
MySQL
Redis
Redis
JWT
JWT
Kitex
Kitex
GORM
GORM
Hertz
Hertz
RabbitMQ
RabbitMQ
Consul
Consul
Docker
Docker
Protobuf
Protobuf

Tip

我们的技术栈中的每个组件都是基于其可靠性和在生产环境中的广泛采用而选择的。

开发中的挑战

  1. 认证流程

    • 安全存储密钥
    • 正确解码Token并认证
    • 处理令牌过期
  2. 表单处理

    • 版本1:使用HTML5验证
    • 版本2:实现受控组件
  3. 容器化部署

    • Consul的服务注册与发现
    • 检查网关与路由的配置
    • Redis的集群部署
  4. 下单-扣除库存-支付

    • 复杂的业务场景需求分析
    • 高并发场景下的性能问题
    • Saga分布式事务一致性解决方案

    📂 项目结构

MyGoMall/
|-- LICENSE
|-- README.md
|-- apis
|   |-- Readme.md
|   |-- biz
|   |   |-- handler
|   |   |   |-- 各个服务与前端交互的代码
|   |   |-- router
|   |   |   |-- hertz 生成的文件
|   |   `-- utils
|   |       |-- jsonValue.go
|   |       `-- resp.go
|   |-- conf
|   |   |-- 配置文件,用于配置服务需要连接的数据库、注册端口等
|   |-- go.mod
|   |-- go.sum
|   |-- hertz_gen
|   |   |-- hertz 生成的文件
|   |-- infra
|   |   `-- mtl
|   |-- log
|   |   `-- hertz.log
|   |-- main.go
|   |-- rpc
|   `-- script
|-- app
|   |-- Dockerfile.example
|   |-- README.md
|   `-- 各个微服务的源文件夹 (以 user 为例)
|       |-- Dockerfile
|       |-- biz
|       |   |-- dal
|       |   |   |-- 用于初始化数据库的代码
|       |   |   |-- init.go
|       |   |   |-- mysql
|       |   |   |   `-- init.go
|       |   |   `-- redis
|       |   |       `-- init.go
|       |   |-- model
|       |   |   |-- 操作数据库的代码、复用性高的语句、结构体标准等
|       |   |   |-- address.go
|       |   |   |-- base.go
|       |   |   |-- user.go
|       |   |   `-- user_test.go
|       |   `-- service
|       |       |-- 各个服务接口的源代码、单测文件
|       |       |-- delete_user.go
|       |       |-- delete_user_test.go
|       |       |-- get_user_info.go
|       |       |-- get_user_info_test.go
|       |       |-- login.go
|       |       |-- login_test.go
|       |       |-- logout.go
|       |       |-- logout_test.go
|       |       |-- register.go
|       |       |-- register_test.go
|       |       |-- update_user.go
|       |       `-- update_user_test.go
|       |-- build.sh
|       |-- conf
|       |   |-- 配置文件,用于配置服务需要连接的数据库、注册端口等
|       |   |-- conf.go
|       |   |-- dev
|       |   |   `-- conf.yaml
|       |   |-- online
|       |   |   `-- conf.yaml
|       |   `-- test
|       |       `-- conf.yaml
|       |-- docker-compose.yaml
|       |-- go.mod
|       |-- go.sum
|       |-- handler.go
|       |-- kitex_info.yaml
|       |-- log
|       |   `-- kitex.log
|       |-- main.go
|       |-- readme.md
|       |-- rpc
|       |   `-- client.go
|       |-- script
|       |   `-- bootstrap.sh
|       `-- utils
|           `-- constant.go
|-- common
|   |-- build.sh
|   |-- clientsuite
|   |   `-- clientsuite.go
|   |-- constant
|   |   `-- orderconstants.go
|   |-- go.mod
|   |-- go.sum
|   |-- handler.go
|   |-- kitex_gen
|   |   |-- kitex 为各个微服务生成的文件
|   |-- kitex_info.yaml
|   |-- main.go
|   |-- mtl
|   |-- rpc
|   |-- script
|   |-- serversuite
|   `-- utils
|-- conf
|   `-- config.yaml.example
|-- deploy
|   |-- Consul.md
|   |-- conf
|   |   `-- prometheus.yml
|   |-- docker
|   |   |-- 各个服务的 Dockerfile
|   |-- docker-compose.yaml
|   |-- kubernetes
|   |   `-- docker-compose.yaml
|   `-- redis
|       `-- clusters.md
|-- docs
|   |-- api
|   |   |-- Apifox使用文档
|   |-- database
|   |   |-- MyGoMall数据库表设计文档.md
|   |   |-- area.sql
|   |   |-- base.sql
|   |   |-- ...各个数据表独立的设计文档...
|-- go.work
|-- go.work.sum
|-- idl
|   |-- api
|   |   |-- 用于 hertz 框架的 proto 文件
|   |-- 用于 kitex 框架的 proto 文件
`-- kitex_gen

🚀 快速开始

安装说明

  1. 克隆仓库:
git clone https://github.com/BeroKiTeer/MyGoMall.git
cd MyGoMall
  1. 安装依赖:
go mod download
或
go mod tidy
  1. 设置数据库:
cd docs/database
# 按照提示,在 `MyGoMall` database 中建立数据表与索引
  1. 配置应用:
cd app/[微服务名]/conf/dev
# 使用您的数据库凭证编辑 各个微服务的配置文件
  1. Docker上构建:
    1. 使用以下路径的 Dockerfiledeploy\docker\[微服务名]\Dockerfile
    2. 绑定端口,端口号要与 conf/dev中的 yaml文件填写的一致
    3. 环境变量,设置GO_ENV=dev绑定开发环境。

📝 API文档

cd docs/api

🗄️ 数据库架构

我们的综合电商数据库包括:

  • user: 用户账户和认证
  • product: 商品基本信息
  • category: 商品类别
  • category_product : 中间表,在product表与category表中建立联系
  • order: 订单处理
  • payment: 支付记录

🤝 贡献指南

我们欢迎贡献!请按照以下步骤操作:

  1. Fork 本仓库
  2. 创建您的特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交您的更改 (git commit -m '添加一些很棒的特性')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启一个 Pull Request

📄 许可证

本项目采用 MIT 许可证。

🙋‍♀ 作者



⭐ 在 GitHub 上为我们加注星标 | 📖 阅读 Wiki | 🐛 报告问题