- 配置文件上传大小限制,单个文件最大10MB,请求最大50MB - 添加文件写入磁盘阈值配置,超过2MB写入临时文件 - 实现文件上传超限异常处理,返回友好提示信息 - 优化应用启动日志,显示访问地址和运行环境信息 - 增加支付订单查询和更新的日志记录 - 创建阿里云OSS配置属性类,统一管理OSS参数 - 添加业务异常类,支持自定义错误码和消息 - 完善系统架构文档,描述前后端包结构和核心组件 - 新增商品创建请求DTO,支持SKU列表和校验规则 - 添加风控相关的客户信息和商品信息DTO - 配置Logback日志框架,支持不同环境的日志输出策略
5.6 KiB
5.6 KiB
系统架构完整性说明
后端架构(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: 统一响应结果类,所有接口返回统一格式
- 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. 完整性
- 包含工具类、常量、枚举
- 包含异常处理、统一响应
- 包含配置管理、状态管理
最佳实践
- 统一响应格式: 所有接口使用Result返回
- 异常处理: 使用BusinessException抛出业务异常
- 枚举使用: 使用枚举替代魔法字符串
- 工具类: 通用功能封装为工具类
- 配置管理: 配置统一管理,支持多环境
扩展建议
- 日志切面: 添加AOP日志切面
- 接口文档: 集成Swagger/OpenAPI
- 缓存: 添加Redis缓存支持
- 消息队列: 添加消息队列支持
- 监控: 添加系统监控和链路追踪