Files
MTKJPAY/mt-pay/ARCHITECTURE_COMPLETE.md

180 lines
5.6 KiB
Markdown
Raw Normal View History

# 系统架构完整性说明
## 后端架构mt-pay
### 1. 包结构
```
com.mtkj.mtpay/
├── common/ # 通用组件
│ ├── Result.java # 统一响应结果类
│ ├── ResultCode.java # 响应码枚举
│ ├── constants/ # 常量类
│ │ └── PaymentConstants.java
│ └── enums/ # 枚举类
│ ├── OrderStatus.java
│ ├── PaymentType.java
│ └── RecordType.java
├── config/ # 配置类
│ ├── DruidDataSourceConfig.java
│ ├── MyBatisPlusConfig.java
│ ├── MyMetaObjectHandler.java
│ ├── PingPongProperties.java
│ ├── RestClientConfig.java
│ └── WebConfig.java # Web配置跨域等
├── controller/ # 控制器层
│ ├── PaymentController.java
│ └── CallbackController.java
├── dto/ # 数据传输对象
│ ├── request/
│ ├── response/
│ └── risk/
├── entity/ # 实体类
│ ├── PaymentOrder.java
│ └── PaymentRecord.java
├── exception/ # 异常处理
│ ├── BusinessException.java
│ └── GlobalExceptionHandler.java
├── mapper/ # 数据访问层
│ ├── PaymentOrderMapper.java
│ └── PaymentRecordMapper.java
├── service/ # 服务层(接口)
│ ├── SignatureService.java
│ ├── PingPongPayService.java
│ ├── PaymentOrderService.java
│ └── CallbackService.java
├── service/impl/ # 服务层(实现)
│ ├── SignatureServiceImpl.java
│ ├── PingPongPayServiceImpl.java
│ ├── PaymentOrderServiceImpl.java
│ └── CallbackServiceImpl.java
└── util/ # 工具类
├── DateUtils.java
├── StringUtils.java
└── OrderIdGenerator.java
```
### 2. 核心组件说明
#### 统一响应格式
- **Result<T>**: 统一响应结果类,所有接口返回统一格式
- **ResultCode**: 响应码枚举,定义所有业务响应码
#### 异常处理
- **BusinessException**: 业务异常类
- **GlobalExceptionHandler**: 全局异常处理器,统一处理异常
#### 枚举类
- **OrderStatus**: 订单状态枚举
- **PaymentType**: 支付类型枚举
- **RecordType**: 记录类型枚举
#### 工具类
- **DateUtils**: 日期时间工具类
- **StringUtils**: 字符串工具类
- **OrderIdGenerator**: 订单号生成器
#### 常量类
- **PaymentConstants**: 支付相关常量
#### 配置类
- **WebConfig**: Web配置跨域、拦截器等
## 前端架构MTKJPAY-FRONT
### 1. 目录结构
```
MTKJPAY-FRONT/
├── src/
│ ├── api/ # API接口
│ │ ├── request.js # Axios封装
│ │ └── payment.js # 支付相关API
│ ├── components/ # 通用组件
│ │ ├── PageHeader.vue
│ │ └── Loading.vue
│ ├── config/ # 配置文件
│ │ └── index.js
│ ├── router/ # 路由配置
│ │ └── index.js
│ ├── store/ # 状态管理
│ │ └── index.js
│ ├── utils/ # 工具函数
│ │ ├── constants.js # 常量定义
│ │ ├── helpers.js # 工具函数
│ │ └── request.js # 请求工具
│ ├── views/ # 页面组件
│ │ ├── CreateOrder.vue
│ │ ├── Checkout.vue
│ │ ├── PaymentResult.vue
│ │ └── OrderQuery.vue
│ ├── App.vue # 根组件
│ └── main.js # 入口文件
├── .env.development # 开发环境配置
├── .env.production # 生产环境配置
└── vite.config.js # Vite配置
```
### 2. 核心组件说明
#### 工具类
- **constants.js**: 常量定义(订单状态、支付类型、币种等)
- **helpers.js**: 工具函数(格式化、验证、防抖节流等)
- **request.js**: 请求工具函数
#### 通用组件
- **PageHeader.vue**: 页面头部组件
- **Loading.vue**: 加载组件
#### 配置管理
- **config/index.js**: 统一配置管理
- **.env.development**: 开发环境配置
- **.env.production**: 生产环境配置
#### 状态管理
- **store/index.js**: 简单状态管理可扩展为Pinia
## 架构特点
### 1. 分层清晰
- Controller → Service → Mapper → Entity
- 接口与实现分离
- DTO与Entity分离
### 2. 统一规范
- 统一响应格式Result
- 统一异常处理
- 统一响应码
### 3. 可扩展性
- 枚举类便于扩展
- 工具类可复用
- 组件化设计
### 4. 可维护性
- 代码结构清晰
- 命名规范统一
- 注释完整
### 5. 完整性
- 包含工具类、常量、枚举
- 包含异常处理、统一响应
- 包含配置管理、状态管理
## 最佳实践
1. **统一响应格式**: 所有接口使用Result<T>返回
2. **异常处理**: 使用BusinessException抛出业务异常
3. **枚举使用**: 使用枚举替代魔法字符串
4. **工具类**: 通用功能封装为工具类
5. **配置管理**: 配置统一管理,支持多环境
## 扩展建议
1. **日志切面**: 添加AOP日志切面
2. **接口文档**: 集成Swagger/OpenAPI
3. **缓存**: 添加Redis缓存支持
4. **消息队列**: 添加消息队列支持
5. **监控**: 添加系统监控和链路追踪