这是一个使用领域驱动设计(DDD)模式构建的Go电子商务示例项目。该项目展示了如何使用DDD的核心概念构建一个具有良好架构的应用程序。
项目遵循DDD的分层架构:
ddd-ecommerce-example/ ├── cmd/ # 应用程序入口 │ └── main.go # 主程序 ├── internal/ # 内部包 │ ├── domain/ # 领域层 │ │ ├── common.go # 通用定义 │ │ ├── order/ # 订单领域 │ │ ├── product/ # 产品领域 │ │ ├── user/ # 用户领域 │ │ └── order_service.go # 领域服务 │ ├── application/ # 应用层 │ │ ├── order_service.go # 订单应用服务 │ │ ├── product_service.go # 产品应用服务 │ │ └── user_service.go # 用户应用服务 │ ├── infrastructure/ # 基础设施层 │ │ ├── db_migrator.go # 数据库迁移工具 │ │ ├── order_repository_gorm.go # 订单仓储GORM实现 │ │ ├── product_repository_gorm.go # 产品仓储GORM实现 │ │ └── user_repository_gorm.go # 用户仓储GORM实现 │ ├── interfaces/ # 接口层 │ │ ├── base_handler.go # 基础处理程序 │ │ ├── order_handler.go # 订单处理程序 │ │ ├── product_handler.go # 产品处理程序 │ │ └── user_handler.go # 用户处理程序 │ └── config/ # 配置 │ └── config.go # 配置定义 └── go.mod # Go模块定义
项目包含三个核心领域模型:
应用程序使用以下环境变量进行配置:
DB_HOST - 数据库主机 (默认: localhost)DB_PORT - 数据库端口 (默认: 3306)DB_USER - 数据库用户名 (默认: root)DB_PASSWORD - 数据库密码 (默认: password)DB_NAME - 数据库名称 (默认: ddd_ecommerce)SERVER_PORT - 服务器端口 (默认: 8080)CREATE DATABASE ddd_ecommerce;
go run cmd/main.go
POST /users - 创建用户GET /users/:id - 获取用户GET /users/email/:email - 通过Email获取用户PUT /users/:id/address - 更新用户地址PUT /users/:id/name - 更新用户名称DELETE /users/:id - 删除用户POST /products - 创建产品GET /products/:id - 获取产品GET /products - 获取所有产品PUT /products/:id/inventory - 更新产品库存DELETE /products/:id - 删除产品POST /orders - 创建订单GET /orders/:id - 获取订单GET /orders/user/:userId - 获取用户订单PUT /orders/:id/process - 处理订单PUT /orders/:id/cancel - 取消订单本项目应用了以下DDD模式: