# 系统架构完整性说明 ## 后端架构(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. 完整性 - 包含工具类、常量、枚举 - 包含异常处理、统一响应 - 包含配置管理、状态管理 ## 最佳实践 1. **统一响应格式**: 所有接口使用Result返回 2. **异常处理**: 使用BusinessException抛出业务异常 3. **枚举使用**: 使用枚举替代魔法字符串 4. **工具类**: 通用功能封装为工具类 5. **配置管理**: 配置统一管理,支持多环境 ## 扩展建议 1. **日志切面**: 添加AOP日志切面 2. **接口文档**: 集成Swagger/OpenAPI 3. **缓存**: 添加Redis缓存支持 4. **消息队列**: 添加消息队列支持 5. **监控**: 添加系统监控和链路追踪