Files
MTKJPAY/mt-pay/ARCHITECTURE_COMPLETE.md
qiube 8cfe9e00e0 feat(core): 增强文件上传配置和异常处理
- 配置文件上传大小限制,单个文件最大10MB,请求最大50MB
- 添加文件写入磁盘阈值配置,超过2MB写入临时文件
- 实现文件上传超限异常处理,返回友好提示信息
- 优化应用启动日志,显示访问地址和运行环境信息
- 增加支付订单查询和更新的日志记录
- 创建阿里云OSS配置属性类,统一管理OSS参数
- 添加业务异常类,支持自定义错误码和消息
- 完善系统架构文档,描述前后端包结构和核心组件
- 新增商品创建请求DTO,支持SKU列表和校验规则
- 添加风控相关的客户信息和商品信息DTO
- 配置Logback日志框架,支持不同环境的日志输出策略
2025-12-19 16:52:28 +08:00

180 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 系统架构完整性说明
## 后端架构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. **监控**: 添加系统监控和链路追踪