Files
fatemaster/backend/FateMaster.API/FateMaster.API
2025-10-05 23:44:27 +08:00
..
2025-10-05 23:44:27 +08:00
2025-10-05 23:44:27 +08:00
2025-10-05 23:44:27 +08:00
2025-10-05 23:44:27 +08:00
2025-10-05 23:44:27 +08:00
2025-10-05 23:44:27 +08:00
2025-10-05 23:44:27 +08:00
2025-10-05 23:44:27 +08:00
2025-10-05 23:44:27 +08:00
2025-10-05 23:44:27 +08:00
2025-10-05 23:44:27 +08:00
2025-10-05 23:44:27 +08:00
2025-10-05 23:44:27 +08:00
2025-10-05 23:44:27 +08:00
2025-10-05 23:44:27 +08:00
2025-10-05 23:44:27 +08:00
2025-10-05 23:44:27 +08:00

命运大师 API - 重构后的架构

本项目采用 Clean Architecture整洁架构 模式重构,提供清晰的分层结构,易于维护和扩展。

项目结构

FateMaster.API/
├── FateMaster.Domain/              # 领域层(实体、枚举、领域接口)
│   ├── Entities/                   # 实体类
│   │   ├── DivinationRecord.cs
│   │   ├── PriceConfig.cs
│   │   └── SystemConfig.cs
│   ├── Enums/                      # 枚举
│   │   ├── DivinationType.cs
│   │   ├── PaymentStatus.cs
│   │   └── PaymentMethod.cs
│   ├── Common/                     # 公共基类
│   │   └── BaseEntity.cs
│   └── Interfaces/                 # 领域接口
│       ├── IRepository.cs
│       └── IUnitOfWork.cs
│
├── FateMaster.Shared/              # 共享层DTOs、常量、工具类
│   ├── DTOs/
│   │   ├── DivinationDTOs.cs      # 卜卦相关DTOs
│   │   ├── PriceConfigDTOs.cs     # 价格配置DTOs
│   │   ├── AdminDTOs.cs           # 管理后台DTOs
│   │   └── ApiResponse.cs         # 统一响应包装
│   └── Constants/
│       └── AppConstants.cs         # 应用常量
│
├── FateMaster.Application/         # 应用服务层(业务逻辑)
│   ├── Interfaces/
│   │   ├── IDivinationService.cs
│   │   ├── IPriceConfigService.cs
│   │   └── IAdminService.cs
│   ├── Services/
│   │   ├── DivinationService.cs
│   │   ├── PriceConfigService.cs
│   │   └── AdminService.cs
│   └── DependencyInjection.cs     # 服务注册
│
├── FateMaster.Infrastructure/      # 基础设施层(数据访问)
│   ├── Data/
│   │   └── ApplicationDbContext.cs
│   ├── Repositories/
│   │   ├── Repository.cs          # 通用仓储实现
│   │   └── UnitOfWork.cs          # 工作单元实现
│   └── DependencyInjection.cs     # 基础设施服务注册
│
├── FateMaster.Web.API/             # 网站前端API
│   ├── Controllers/
│   │   └── DivinationController.cs
│   ├── Program.cs
│   └── appsettings.json
│
└── FateMaster.Admin.API/           # 管理后台API
    ├── Controllers/
    │   ├── PricesController.cs
    │   └── RecordsController.cs
    ├── Program.cs
    └── appsettings.json

架构层次

1. Domain领域层

  • 职责:定义核心实体、枚举和领域接口
  • 依赖:无依赖(最内层)
  • 特点:独立于外部框架和技术

2. Shared共享层

  • 职责提供跨层共享的DTOs、常量和工具类
  • 依赖:无依赖
  • 特点:可被所有层引用

3. Application应用服务层

  • 职责:实现业务逻辑和用例
  • 依赖Domain、Shared
  • 特点:定义服务接口和实现

4. Infrastructure基础设施层

  • 职责:实现数据访问和外部服务集成
  • 依赖Domain、Application、Shared
  • 特点实现Repository模式和UnitOfWork模式

5. Web.API网站前端API

  • 职责为网站前端提供HTTP API
  • 端口:默认 5000 (HTTP), 5001 (HTTPS)
  • 依赖Application、Infrastructure、Shared
  • CORS:允许 http://localhost:3000, http://localhost:3001

6. Admin.API管理后台API

  • 职责为管理后台提供HTTP API
  • 端口:默认 5002 (HTTP), 5003 (HTTPS)
  • 依赖Application、Infrastructure、Shared
  • CORS:允许 http://localhost:3002, http://localhost:3003

运行项目

前置条件

  • .NET 8.0 SDK
  • MySQL 8.0+

配置数据库

修改 appsettings.json 中的连接字符串:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost;Port=3306;Database=fatemaster;User=root;Password=your_password;"
  }
}

运行迁移(首次运行)

# 在 FateMaster.API 目录下执行
dotnet ef migrations add InitialCreate --project FateMaster.Infrastructure --startup-project FateMaster.Web.API
dotnet ef database update --project FateMaster.Infrastructure --startup-project FateMaster.Web.API

启动网站API

cd FateMaster.Web.API
dotnet run
# 访问 https://localhost:5001/swagger

启动管理后台API

cd FateMaster.Admin.API
dotnet run
# 访问 https://localhost:5003/swagger

API 端点

Web.API (网站前端)

获取价格配置

GET /api/divination/prices

提交卜卦请求

POST /api/divination/submit
Content-Type: application/json

{
  "type": "bazi",
  "inputData": "{\"name\":\"张三\",\"birthDate\":\"1990-01-01\"}",
  "paymentMethod": "alipay",
  "amount": 99,
  "language": "zh-CN"
}

获取卜卦结果

GET /api/divination/{id}

Admin.API (管理后台)

获取所有价格配置

GET /api/admin/prices

更新价格配置

PUT /api/admin/prices/{id}
Content-Type: application/json

{
  "serviceType": "bazi",
  "price": 99.00,
  "currency": "CNY",
  "isEnabled": true
}

获取卜卦记录列表(分页)

GET /api/admin/records?page=1&pageSize=20&type=bazi&paymentStatus=paid

获取统计数据

GET /api/admin/records/statistics

架构优势

1. 关注点分离

  • 每一层都有明确的职责
  • 业务逻辑与基础设施解耦
  • 易于理解和维护

2. 可测试性

  • 依赖注入使单元测试更容易
  • Repository模式便于Mock数据层
  • 服务层可独立测试

3. 可扩展性

  • 新增功能只需添加相应的服务
  • 更换数据库只需修改Infrastructure层
  • 支持多个API项目共享业务逻辑

4. 依赖规则

  • 内层不依赖外层
  • 依赖方向API → Application → Domain
  • Infrastructure实现Domain定义的接口

开发指南

添加新功能

  1. Domain/Entities 中定义新实体
  2. Shared/DTOs 中定义对应的DTOs
  3. Application/Interfaces 中定义服务接口
  4. Application/Services 中实现服务
  5. Infrastructure 中添加数据访问代码(如需要)
  6. 在 API 项目中添加控制器

代码规范

  • 使用 record 定义 DTOs
  • 使用 async/await 处理异步操作
  • 统一使用 ApiResponse<T> 包装响应
  • 使用 ILogger 记录日志
  • 遵循 SOLID 原则

技术栈

  • .NET 8.0:最新的.NET平台
  • ASP.NET CoreWeb API框架
  • Entity Framework Core 8.0ORM框架
  • Pomelo.EntityFrameworkCore.MySqlMySQL数据库提供程序
  • Swagger/OpenAPIAPI文档

下一步建议

  1. 添加认证授权为Admin.API添加JWT认证
  2. 添加缓存使用Redis缓存热点数据
  3. 添加日志系统集成Serilog或NLog
  4. 添加单元测试:为核心业务逻辑编写测试
  5. 添加API限流:防止恶意请求
  6. 添加健康检查:监控应用状态
  7. 添加Docker支持:容器化部署

许可证

本项目遵循 MIT 许可证。