diff --git a/PROJECT_IMPROVEMENT_PLAN.md b/PROJECT_IMPROVEMENT_PLAN.md new file mode 100644 index 0000000..d7ea53a --- /dev/null +++ b/PROJECT_IMPROVEMENT_PLAN.md @@ -0,0 +1,373 @@ +# 项目完善、优化、补充计划 + +## 📋 目录 +1. [功能完善](#功能完善) +2. [性能优化](#性能优化) +3. [安全性增强](#安全性增强) +4. [代码质量](#代码质量) +5. [数据完整性](#数据完整性) +6. [监控和日志](#监控和日志) +7. [部署和运维](#部署和运维) +8. [用户体验](#用户体验) +9. [文档完善](#文档完善) + +--- + +## 1. 功能完善 + +### 1.1 商品管理功能 +- [ ] **商品编辑功能** ⚠️ 高优先级 + - 当前状态:`ProductManage.vue` 中有 TODO 标记,点击编辑只显示提示 + - 需要实现: + - 后端:`PUT /api/product/{id}` 更新商品接口 + - 后端:`ProductService.updateProduct()` 方法 + - 前端:`/manage/product/edit/:id` 编辑页面 + - 支持修改商品名称、价格、主图、SKU信息等 + +- [ ] **商品上架功能** + - 当前状态:只有下架功能,没有上架功能 + - 需要实现: + - 后端:`PUT /api/product/{id}/on-shelf` 上架接口 + - 上架时恢复SKU库存(需要记录下架前的库存) + +- [ ] **商品批量操作** + - 批量上架/下架 + - 批量删除(软删除) + +### 1.2 订单管理功能 +- [ ] **订单列表查询** ⚠️ 高优先级 + - 当前状态:只有单个订单查询(`OrderQuery.vue`),没有列表 + - 需要实现: + - 后端:`GET /api/order/list` 订单列表接口(支持分页、筛选) + - 前端:订单管理页面,支持按状态、时间、订单号等查询 + - 支持订单状态筛选(待支付、已支付、已发货、已完成、已取消) + +- [ ] **订单状态管理** + - 订单发货功能(更新状态为 SHIPPED) + - 订单完成功能(更新状态为 COMPLETED) + - 订单取消功能(更新状态为 CANCELLED,恢复库存) + +- [ ] **订单详情查看** + - 在订单列表中点击查看详情 + - 显示完整的订单信息、支付信息、收货地址等 + +### 1.3 库存管理 +- [ ] **库存扣减** ⚠️ 高优先级 + - 当前状态:创建订单时只验证库存,没有扣减 + - 需要实现: + - 创建订单时扣减库存(使用数据库锁防止超卖) + - 支付成功时确认扣减(如果创建时是预扣,支付时确认) + - 订单取消时恢复库存 + +- [ ] **库存预警** + - 库存低于阈值时提醒 + - 库存为0时自动下架商品(可选) + +- [ ] **库存历史记录** + - 记录库存变动历史(入库、出库、调整等) + +### 1.4 数据统计 +- [ ] **销售统计** + - 按时间段统计销售额 + - 按商品统计销量 + - 按地区统计销售情况 + +- [ ] **订单统计** + - 订单数量统计 + - 订单状态分布 + - 支付成功率统计 + +--- + +## 2. 性能优化 + +### 2.1 缓存机制 +- [ ] **引入Redis缓存** ⚠️ 中优先级 + - 当前状态:PayPal token和汇率使用内存缓存(单机可用,集群有问题) + - 需要实现: + - 集成Redis + - PayPal token缓存到Redis + - 汇率缓存到Redis + - 商品详情缓存(热点商品) + - 商品列表缓存(带过期时间) + +- [ ] **数据库查询优化** + - 检查慢查询日志 + - 优化复杂查询 + - 添加必要的数据库索引 + +### 2.2 前端优化 +- [ ] **移除console.log** ⚠️ 低优先级 + - 当前状态:前端代码中有多处 `console.log`、`console.error` + - 需要实现: + - 使用日志库(如 `winston` 或自定义日志工具) + - 生产环境禁用console输出 + - 统一错误处理 + +- [ ] **代码分割和懒加载** + - 路由懒加载(已部分实现) + - 组件懒加载 + - 减少首屏加载时间 + +- [ ] **图片优化** + - 图片懒加载 + - 图片压缩 + - CDN加速 + +### 2.3 数据库优化 +- [ ] **连接池优化** + - 检查当前连接池配置是否合理 + - 根据实际负载调整参数 + +- [ ] **批量操作优化** + - 商品创建已优化(批量插入SKU) + - 其他批量操作也需要优化 + +--- + +## 3. 安全性增强 + +### 3.1 密码安全 +- [ ] **密码加密升级** ⚠️ 高优先级 + - 当前状态:使用MD5加密(不安全) + - 需要实现: + - 使用BCrypt或Argon2加密 + - 密码强度验证 + - 密码历史记录(防止重复使用) + +- [ ] **Token安全** + - 当前状态:使用MD5+Base64(注释说生产环境建议使用JWT) + - 需要实现: + - 集成JWT(JSON Web Token) + - Token刷新机制 + - Token黑名单(登出时) + +### 3.2 权限控制 +- [ ] **角色权限系统** ⚠️ 中优先级 + - 当前状态:只有登录验证,没有角色权限 + - 需要实现: + - 角色管理(管理员、普通用户等) + - 权限管理(商品管理、订单管理、用户管理等) + - 接口权限控制(`@PreAuthorize` 或自定义拦截器) + +- [ ] **API访问控制** + - 接口访问频率限制(防止暴力攻击) + - IP白名单(可选,用于管理接口) + +### 3.3 数据安全 +- [ ] **敏感数据加密** + - 客户手机号、邮箱加密存储 + - 支付信息加密 + +- [ ] **SQL注入防护** + - 检查是否所有查询都使用参数化查询(MyBatis-Plus已提供) + +- [ ] **XSS防护** + - 前端输入验证和转义 + - 后端输出转义 + +--- + +## 4. 代码质量 + +### 4.1 测试覆盖 +- [ ] **单元测试** ⚠️ 中优先级 + - 当前状态:没有单元测试 + - 需要实现: + - Service层单元测试 + - Controller层单元测试 + - 工具类单元测试 + - 测试覆盖率目标:>70% + +- [ ] **集成测试** + - API接口测试 + - 数据库操作测试 + +- [ ] **前端测试** + - 组件测试 + - E2E测试 + +### 4.2 代码规范 +- [ ] **代码审查** + - 统一代码风格 + - 移除TODO标记(实现或记录到任务列表) + - 代码注释完善 + +- [ ] **静态代码分析** + - 集成SonarQube或类似工具 + - 修复代码质量问题 + +### 4.3 API文档 +- [ ] **Swagger/OpenAPI文档** ⚠️ 中优先级 + - 当前状态:只有部分API有Markdown文档 + - 需要实现: + - 集成Swagger UI + - 自动生成API文档 + - 接口参数和响应说明 + +--- + +## 5. 数据完整性 + +### 5.1 库存管理 +- [ ] **库存扣减逻辑** ⚠️ 高优先级 + - 创建订单时扣减库存 + - 支付成功时确认库存 + - 订单取消时恢复库存 + - 使用数据库锁(SELECT FOR UPDATE)防止超卖 + +- [ ] **库存一致性检查** + - 定期检查库存数据一致性 + - 库存异常告警 + +### 5.2 订单状态流转 +- [ ] **订单状态机** ⚠️ 中优先级 + - 定义订单状态流转规则 + - 防止非法状态转换 + - 状态变更日志 + +### 5.3 数据备份 +- [ ] **数据库备份策略** + - 定期自动备份 + - 备份恢复测试 + - 备份文件管理 + +--- + +## 6. 监控和日志 + +### 6.1 操作日志 +- [ ] **操作审计日志** ⚠️ 中优先级 + - 记录用户操作(商品创建、编辑、下架等) + - 记录订单状态变更 + - 记录支付操作 + +- [ ] **日志查询功能** + - 前端日志查询页面 + - 按时间、用户、操作类型筛选 + +### 6.2 性能监控 +- [ ] **性能指标监控** + - API响应时间监控 + - 数据库查询性能监控 + - 系统资源监控(CPU、内存、磁盘) + +- [ ] **告警机制** + - 异常告警(错误率、响应时间) + - 系统资源告警 + +### 6.3 错误追踪 +- [ ] **错误日志聚合** + - 集成错误追踪服务(如Sentry) + - 错误分类和统计 + - 错误通知 + +--- + +## 7. 部署和运维 + +### 7.1 数据库迁移 +- [ ] **数据库版本管理** ⚠️ 中优先级 + - 当前状态:只有SQL脚本,没有版本管理 + - 需要实现: + - 集成Flyway或Liquibase + - 数据库版本控制 + - 自动迁移脚本 + +### 7.2 配置管理 +- [ ] **环境配置优化** + - 敏感信息加密(密码、密钥等) + - 配置中心(可选) + - 环境变量管理 + +### 7.3 部署文档 +- [ ] **部署指南** + - 生产环境部署步骤 + - 环境要求说明 + - 故障排查指南 + +### 7.4 容器化 +- [ ] **Docker支持** ⚠️ 低优先级 + - Dockerfile编写 + - Docker Compose配置 + - 容器化部署文档 + +--- + +## 8. 用户体验 + +### 8.1 前端优化 +- [ ] **加载状态优化** + - 骨架屏(Skeleton) + - 加载动画优化 + +- [ ] **错误提示优化** + - 友好的错误提示 + - 错误恢复建议 + +- [ ] **移动端优化** + - 响应式设计检查 + - 移动端交互优化 + +### 8.2 功能完善 +- [ ] **订单导出** + - 订单列表导出Excel + - 支持筛选条件导出 + +- [ ] **数据统计可视化** + - 销售图表 + - 订单趋势图 + +--- + +## 9. 文档完善 + +### 9.1 技术文档 +- [ ] **API文档** + - 完整的API文档(Swagger) + - 接口调用示例 + +- [ ] **数据库设计文档** + - ER图 + - 表结构说明 + - 索引说明 + +### 9.2 用户文档 +- [ ] **用户手册** + - 商品管理操作指南 + - 订单管理操作指南 + - 常见问题解答 + +--- + +## 优先级说明 + +- ⚠️ **高优先级**:影响核心功能或安全性,需要尽快实现 +- ⚠️ **中优先级**:提升系统质量和可维护性,建议实现 +- ⚠️ **低优先级**:优化和增强功能,可选择性实现 + +--- + +## 实施建议 + +1. **第一阶段(核心功能)**: + - 商品编辑功能 + - 订单列表查询 + - 库存扣减逻辑 + - 密码加密升级 + +2. **第二阶段(安全性)**: + - JWT Token + - 角色权限系统 + - API访问控制 + +3. **第三阶段(优化)**: + - Redis缓存 + - 性能监控 + - 单元测试 + +4. **第四阶段(完善)**: + - 操作日志 + - 数据统计 + - 文档完善 + diff --git a/logs/mt-pay-error.2025-12-25.log b/logs/mt-pay-error.2025-12-25.log index 5535a69..51b82a6 100644 --- a/logs/mt-pay-error.2025-12-25.log +++ b/logs/mt-pay-error.2025-12-25.log @@ -6352,6 +6352,690 @@ Caused by: java.lang.ClassNotFoundException: com.mtkj.mtpay.config.PingPongPrope ║ ║ ╚══════════════════════════════════════════════════════════╝ +org.springframework.boot.devtools.restart.SilentExitExceptionHandler$SilentExitException: null + at org.springframework.boot.devtools.restart.SilentExitExceptionHandler.exitCurrentThread(SilentExitExceptionHandler.java:92) + at org.springframework.boot.devtools.restart.Restarter.immediateRestart(Restarter.java:179) + at org.springframework.boot.devtools.restart.Restarter.initialize(Restarter.java:163) + at org.springframework.boot.devtools.restart.Restarter.initialize(Restarter.java:532) + at org.springframework.boot.devtools.restart.RestartApplicationListener.onApplicationStartingEvent(RestartApplicationListener.java:98) + at org.springframework.boot.devtools.restart.RestartApplicationListener.onApplicationEvent(RestartApplicationListener.java:51) + at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:178) + at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:171) + at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:149) + at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:137) + at org.springframework.boot.context.event.EventPublishingRunListener.multicastInitialEvent(EventPublishingRunListener.java:136) + at org.springframework.boot.context.event.EventPublishingRunListener.starting(EventPublishingRunListener.java:75) + at org.springframework.boot.SpringApplicationRunListeners.lambda$starting$0(SpringApplicationRunListeners.java:54) + at java.base/java.lang.Iterable.forEach(Iterable.java:75) + at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118) + at org.springframework.boot.SpringApplicationRunListeners.starting(SpringApplicationRunListeners.java:54) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) +2025-12-25 18:04:00.011 [restartedMain] ERROR org.springframework.boot.SpringApplication - Application run failed +org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'customerOrderController': Resolution of declared constructors on bean Class [com.mtkj.mtpay.controller.CustomerOrderController] from ClassLoader [org.springframework.boot.devtools.restart.classloader.RestartClassLoader@1a78dbd2] failed + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:368) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1295) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1190) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:946) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: java.lang.NoClassDefFoundError: com/mtkj/mtpay/service/CustomerOrderService + at java.base/java.lang.Class.getDeclaredConstructors0(Native Method) + at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3373) + at java.base/java.lang.Class.getDeclaredConstructors(Class.java:2555) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:363) + ... 21 common frames omitted +Caused by: java.lang.ClassNotFoundException: com.mtkj.mtpay.service.CustomerOrderService + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:121) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + ... 25 common frames omitted +2025-12-25 18:04:00.016 [restartedMain] ERROR com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ ❌ MTKJ PAY 支付系统启动失败! ❌ ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'customerOrderController': Resolution of declared constructors on bean Class [com.mtkj.mtpay.controller.CustomerOrderController] from ClassLoader [org.springframework.boot.devtools.restart.classloader.RestartClassLoader@1a78dbd2] failed + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:368) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1295) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1190) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:946) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: java.lang.NoClassDefFoundError: com/mtkj/mtpay/service/CustomerOrderService + at java.base/java.lang.Class.getDeclaredConstructors0(Native Method) + at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3373) + at java.base/java.lang.Class.getDeclaredConstructors(Class.java:2555) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:363) + ... 21 common frames omitted +Caused by: java.lang.ClassNotFoundException: com.mtkj.mtpay.service.CustomerOrderService + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:121) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + ... 25 common frames omitted +2025-12-25 18:04:30.885 [restartedMain] ERROR o.s.b.diagnostics.LoggingFailureAnalysisReporter - + +*************************** +APPLICATION FAILED TO START +*************************** + +Description: + +Parameter 1 of constructor in com.mtkj.mtpay.controller.PayPalController required a bean of type 'com.mtkj.mtpay.service.CustomerOrderService' that could not be found. + + +Action: + +Consider defining a bean of type 'com.mtkj.mtpay.service.CustomerOrderService' in your configuration. + +2025-12-25 18:04:30.885 [restartedMain] ERROR com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ ❌ MTKJ PAY 支付系统启动失败! ❌ ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'payPalController' defined in file [E:\MTKJPAY\mt-pay\target\classes\com\mtkj\mtpay\controller\PayPalController.class]: Unsatisfied dependency expressed through constructor parameter 1: No qualifying bean of type 'com.mtkj.mtpay.service.CustomerOrderService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:802) + at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:241) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1356) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1193) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:946) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mtkj.mtpay.service.CustomerOrderService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} + at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1878) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1404) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1348) + at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:911) + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) + ... 22 common frames omitted +2025-12-25 18:04:34.415 [restartedMain] ERROR o.s.b.diagnostics.LoggingFailureAnalysisReporter - + +*************************** +APPLICATION FAILED TO START +*************************** + +Description: + +Parameter 0 of constructor in com.mtkj.mtpay.controller.CustomerOrderController required a bean of type 'com.mtkj.mtpay.service.CustomerOrderService' that could not be found. + + +Action: + +Consider defining a bean of type 'com.mtkj.mtpay.service.CustomerOrderService' in your configuration. + +2025-12-25 18:04:34.415 [restartedMain] ERROR com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ ❌ MTKJ PAY 支付系统启动失败! ❌ ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'customerOrderController' defined in file [E:\MTKJPAY\mt-pay\target\classes\com\mtkj\mtpay\controller\CustomerOrderController.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'com.mtkj.mtpay.service.CustomerOrderService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:802) + at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:241) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1356) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1193) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:946) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mtkj.mtpay.service.CustomerOrderService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} + at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1878) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1404) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1348) + at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:911) + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) + ... 22 common frames omitted +2025-12-25 18:04:44.680 [restartedMain] ERROR org.springframework.boot.SpringApplication - Application run failed +java.lang.IllegalArgumentException: Could not find class [com.mtkj.mtpay.config.PingPongProperties] + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:355) + at org.springframework.core.annotation.TypeMappedAnnotation.adapt(TypeMappedAnnotation.java:465) + at org.springframework.core.annotation.TypeMappedAnnotation.getValue(TypeMappedAnnotation.java:390) + at org.springframework.core.annotation.TypeMappedAnnotation.getAttributeValue(TypeMappedAnnotation.java:371) + at org.springframework.core.annotation.AbstractMergedAnnotation.getRequiredAttributeValue(AbstractMergedAnnotation.java:215) + at org.springframework.core.annotation.AbstractMergedAnnotation.getClassArray(AbstractMergedAnnotation.java:153) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.lambda$getTypes$0(EnableConfigurationPropertiesRegistrar.java:55) + at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273) + at org.springframework.core.annotation.MergedAnnotationsCollection$AnnotationsSpliterator.tryAdvance(MergedAnnotationsCollection.java:254) + at java.base/java.util.Spliterator.forEachRemaining(Spliterator.java:332) + at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) + at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) + at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) + at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) + at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.getTypes(EnableConfigurationPropertiesRegistrar.java:57) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.registerBeanDefinitions(EnableConfigurationPropertiesRegistrar.java:49) + at org.springframework.context.annotation.ImportBeanDefinitionRegistrar.registerBeanDefinitions(ImportBeanDefinitionRegistrar.java:86) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.lambda$loadBeanDefinitionsFromRegistrars$1(ConfigurationClassBeanDefinitionReader.java:376) + at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars(ConfigurationClassBeanDefinitionReader.java:375) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:148) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:120) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:428) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:289) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:349) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:118) + at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:775) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:597) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: java.lang.ClassNotFoundException: com.mtkj.mtpay.config.PingPongProperties + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:121) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.util.ClassUtils.forName(ClassUtils.java:304) + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:345) + ... 38 common frames omitted +2025-12-25 18:04:44.681 [restartedMain] ERROR com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ ❌ MTKJ PAY 支付系统启动失败! ❌ ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +java.lang.IllegalArgumentException: Could not find class [com.mtkj.mtpay.config.PingPongProperties] + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:355) + at org.springframework.core.annotation.TypeMappedAnnotation.adapt(TypeMappedAnnotation.java:465) + at org.springframework.core.annotation.TypeMappedAnnotation.getValue(TypeMappedAnnotation.java:390) + at org.springframework.core.annotation.TypeMappedAnnotation.getAttributeValue(TypeMappedAnnotation.java:371) + at org.springframework.core.annotation.AbstractMergedAnnotation.getRequiredAttributeValue(AbstractMergedAnnotation.java:215) + at org.springframework.core.annotation.AbstractMergedAnnotation.getClassArray(AbstractMergedAnnotation.java:153) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.lambda$getTypes$0(EnableConfigurationPropertiesRegistrar.java:55) + at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273) + at org.springframework.core.annotation.MergedAnnotationsCollection$AnnotationsSpliterator.tryAdvance(MergedAnnotationsCollection.java:254) + at java.base/java.util.Spliterator.forEachRemaining(Spliterator.java:332) + at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) + at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) + at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) + at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) + at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.getTypes(EnableConfigurationPropertiesRegistrar.java:57) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.registerBeanDefinitions(EnableConfigurationPropertiesRegistrar.java:49) + at org.springframework.context.annotation.ImportBeanDefinitionRegistrar.registerBeanDefinitions(ImportBeanDefinitionRegistrar.java:86) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.lambda$loadBeanDefinitionsFromRegistrars$1(ConfigurationClassBeanDefinitionReader.java:376) + at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars(ConfigurationClassBeanDefinitionReader.java:375) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:148) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:120) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:428) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:289) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:349) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:118) + at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:775) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:597) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: java.lang.ClassNotFoundException: com.mtkj.mtpay.config.PingPongProperties + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:121) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.util.ClassUtils.forName(ClassUtils.java:304) + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:345) + ... 38 common frames omitted +2025-12-25 18:04:53.850 [restartedMain] ERROR org.springframework.boot.SpringApplication - Application run failed +java.lang.IllegalArgumentException: Could not find class [com.mtkj.mtpay.config.AliyunOSSProperties] + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:355) + at org.springframework.core.annotation.TypeMappedAnnotation.adapt(TypeMappedAnnotation.java:465) + at org.springframework.core.annotation.TypeMappedAnnotation.getValue(TypeMappedAnnotation.java:390) + at org.springframework.core.annotation.TypeMappedAnnotation.getAttributeValue(TypeMappedAnnotation.java:371) + at org.springframework.core.annotation.AbstractMergedAnnotation.getRequiredAttributeValue(AbstractMergedAnnotation.java:215) + at org.springframework.core.annotation.AbstractMergedAnnotation.getClassArray(AbstractMergedAnnotation.java:153) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.lambda$getTypes$0(EnableConfigurationPropertiesRegistrar.java:55) + at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273) + at org.springframework.core.annotation.MergedAnnotationsCollection$AnnotationsSpliterator.tryAdvance(MergedAnnotationsCollection.java:254) + at java.base/java.util.Spliterator.forEachRemaining(Spliterator.java:332) + at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) + at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) + at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) + at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) + at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.getTypes(EnableConfigurationPropertiesRegistrar.java:57) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.registerBeanDefinitions(EnableConfigurationPropertiesRegistrar.java:49) + at org.springframework.context.annotation.ImportBeanDefinitionRegistrar.registerBeanDefinitions(ImportBeanDefinitionRegistrar.java:86) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.lambda$loadBeanDefinitionsFromRegistrars$1(ConfigurationClassBeanDefinitionReader.java:376) + at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars(ConfigurationClassBeanDefinitionReader.java:375) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:148) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:120) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:428) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:289) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:349) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:118) + at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:775) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:597) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: java.lang.ClassNotFoundException: com.mtkj.mtpay.config.AliyunOSSProperties + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:121) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.util.ClassUtils.forName(ClassUtils.java:304) + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:345) + ... 38 common frames omitted +2025-12-25 18:04:53.851 [restartedMain] ERROR com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ ❌ MTKJ PAY 支付系统启动失败! ❌ ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +java.lang.IllegalArgumentException: Could not find class [com.mtkj.mtpay.config.AliyunOSSProperties] + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:355) + at org.springframework.core.annotation.TypeMappedAnnotation.adapt(TypeMappedAnnotation.java:465) + at org.springframework.core.annotation.TypeMappedAnnotation.getValue(TypeMappedAnnotation.java:390) + at org.springframework.core.annotation.TypeMappedAnnotation.getAttributeValue(TypeMappedAnnotation.java:371) + at org.springframework.core.annotation.AbstractMergedAnnotation.getRequiredAttributeValue(AbstractMergedAnnotation.java:215) + at org.springframework.core.annotation.AbstractMergedAnnotation.getClassArray(AbstractMergedAnnotation.java:153) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.lambda$getTypes$0(EnableConfigurationPropertiesRegistrar.java:55) + at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273) + at org.springframework.core.annotation.MergedAnnotationsCollection$AnnotationsSpliterator.tryAdvance(MergedAnnotationsCollection.java:254) + at java.base/java.util.Spliterator.forEachRemaining(Spliterator.java:332) + at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) + at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) + at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) + at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) + at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.getTypes(EnableConfigurationPropertiesRegistrar.java:57) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.registerBeanDefinitions(EnableConfigurationPropertiesRegistrar.java:49) + at org.springframework.context.annotation.ImportBeanDefinitionRegistrar.registerBeanDefinitions(ImportBeanDefinitionRegistrar.java:86) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.lambda$loadBeanDefinitionsFromRegistrars$1(ConfigurationClassBeanDefinitionReader.java:376) + at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars(ConfigurationClassBeanDefinitionReader.java:375) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:148) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:120) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:428) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:289) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:349) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:118) + at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:775) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:597) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: java.lang.ClassNotFoundException: com.mtkj.mtpay.config.AliyunOSSProperties + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:121) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.util.ClassUtils.forName(ClassUtils.java:304) + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:345) + ... 38 common frames omitted +2025-12-25 18:04:56.489 [restartedMain] ERROR o.s.b.diagnostics.LoggingFailureAnalysisReporter - + +*************************** +APPLICATION FAILED TO START +*************************** + +Description: + +Parameter 0 of constructor in com.mtkj.mtpay.controller.CustomerOrderController required a bean of type 'com.mtkj.mtpay.service.CustomerOrderService' that could not be found. + + +Action: + +Consider defining a bean of type 'com.mtkj.mtpay.service.CustomerOrderService' in your configuration. + +2025-12-25 18:04:56.489 [restartedMain] ERROR com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ ❌ MTKJ PAY 支付系统启动失败! ❌ ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'customerOrderController' defined in file [E:\MTKJPAY\mt-pay\target\classes\com\mtkj\mtpay\controller\CustomerOrderController.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'com.mtkj.mtpay.service.CustomerOrderService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:802) + at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:241) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1356) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1193) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:946) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mtkj.mtpay.service.CustomerOrderService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} + at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1878) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1404) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1348) + at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:911) + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) + ... 22 common frames omitted +2025-12-25 18:06:10.230 [restartedMain] ERROR org.springframework.boot.SpringApplication - Application run failed +java.lang.IllegalArgumentException: Could not find class [com.mtkj.mtpay.config.PingPongProperties] + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:355) + at org.springframework.core.annotation.TypeMappedAnnotation.adapt(TypeMappedAnnotation.java:465) + at org.springframework.core.annotation.TypeMappedAnnotation.getValue(TypeMappedAnnotation.java:390) + at org.springframework.core.annotation.TypeMappedAnnotation.getAttributeValue(TypeMappedAnnotation.java:371) + at org.springframework.core.annotation.AbstractMergedAnnotation.getRequiredAttributeValue(AbstractMergedAnnotation.java:215) + at org.springframework.core.annotation.AbstractMergedAnnotation.getClassArray(AbstractMergedAnnotation.java:153) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.lambda$getTypes$0(EnableConfigurationPropertiesRegistrar.java:55) + at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273) + at org.springframework.core.annotation.MergedAnnotationsCollection$AnnotationsSpliterator.tryAdvance(MergedAnnotationsCollection.java:254) + at java.base/java.util.Spliterator.forEachRemaining(Spliterator.java:332) + at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) + at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) + at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) + at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) + at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.getTypes(EnableConfigurationPropertiesRegistrar.java:57) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.registerBeanDefinitions(EnableConfigurationPropertiesRegistrar.java:49) + at org.springframework.context.annotation.ImportBeanDefinitionRegistrar.registerBeanDefinitions(ImportBeanDefinitionRegistrar.java:86) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.lambda$loadBeanDefinitionsFromRegistrars$1(ConfigurationClassBeanDefinitionReader.java:376) + at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars(ConfigurationClassBeanDefinitionReader.java:375) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:148) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:120) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:428) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:289) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:349) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:118) + at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:775) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:597) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: java.lang.ClassNotFoundException: com.mtkj.mtpay.config.PingPongProperties + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:121) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.util.ClassUtils.forName(ClassUtils.java:304) + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:345) + ... 38 common frames omitted +2025-12-25 18:06:10.230 [restartedMain] ERROR com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ ❌ MTKJ PAY 支付系统启动失败! ❌ ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +java.lang.IllegalArgumentException: Could not find class [com.mtkj.mtpay.config.PingPongProperties] + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:355) + at org.springframework.core.annotation.TypeMappedAnnotation.adapt(TypeMappedAnnotation.java:465) + at org.springframework.core.annotation.TypeMappedAnnotation.getValue(TypeMappedAnnotation.java:390) + at org.springframework.core.annotation.TypeMappedAnnotation.getAttributeValue(TypeMappedAnnotation.java:371) + at org.springframework.core.annotation.AbstractMergedAnnotation.getRequiredAttributeValue(AbstractMergedAnnotation.java:215) + at org.springframework.core.annotation.AbstractMergedAnnotation.getClassArray(AbstractMergedAnnotation.java:153) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.lambda$getTypes$0(EnableConfigurationPropertiesRegistrar.java:55) + at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273) + at org.springframework.core.annotation.MergedAnnotationsCollection$AnnotationsSpliterator.tryAdvance(MergedAnnotationsCollection.java:254) + at java.base/java.util.Spliterator.forEachRemaining(Spliterator.java:332) + at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) + at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) + at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) + at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) + at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.getTypes(EnableConfigurationPropertiesRegistrar.java:57) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.registerBeanDefinitions(EnableConfigurationPropertiesRegistrar.java:49) + at org.springframework.context.annotation.ImportBeanDefinitionRegistrar.registerBeanDefinitions(ImportBeanDefinitionRegistrar.java:86) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.lambda$loadBeanDefinitionsFromRegistrars$1(ConfigurationClassBeanDefinitionReader.java:376) + at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars(ConfigurationClassBeanDefinitionReader.java:375) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:148) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:120) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:428) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:289) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:349) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:118) + at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:775) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:597) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: java.lang.ClassNotFoundException: com.mtkj.mtpay.config.PingPongProperties + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:121) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.util.ClassUtils.forName(ClassUtils.java:304) + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:345) + ... 38 common frames omitted +2025-12-25 18:06:21.017 [restartedMain] ERROR o.s.b.diagnostics.LoggingFailureAnalysisReporter - + +*************************** +APPLICATION FAILED TO START +*************************** + +Description: + +Field ossProperties in com.mtkj.mtpay.service.impl.OssServiceImpl required a bean of type 'com.mtkj.mtpay.config.AliyunOSSProperties' that could not be found. + +The injection point has the following annotations: + - @org.springframework.beans.factory.annotation.Autowired(required=true) + + +Action: + +Consider defining a bean of type 'com.mtkj.mtpay.config.AliyunOSSProperties' in your configuration. + +2025-12-25 18:06:21.017 [restartedMain] ERROR com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ ❌ MTKJ PAY 支付系统启动失败! ❌ ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'productController': Unsatisfied dependency expressed through field 'ossService': Error creating bean with name 'ossServiceImpl': Unsatisfied dependency expressed through field 'ossProperties': No qualifying bean of type 'com.mtkj.mtpay.config.AliyunOSSProperties' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:772) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:752) + at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:145) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:493) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1420) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:946) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'ossServiceImpl': Unsatisfied dependency expressed through field 'ossProperties': No qualifying bean of type 'com.mtkj.mtpay.config.AliyunOSSProperties' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:772) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:752) + at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:145) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:493) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1420) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) + at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1441) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1348) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:769) + ... 23 common frames omitted +Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mtkj.mtpay.config.AliyunOSSProperties' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} + at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1878) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1404) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1348) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:769) + ... 37 common frames omitted +2025-12-25 18:10:19.023 [main] ERROR com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ ❌ MTKJ PAY 支付系统启动失败! ❌ ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + org.springframework.boot.devtools.restart.SilentExitExceptionHandler$SilentExitException: null at org.springframework.boot.devtools.restart.SilentExitExceptionHandler.exitCurrentThread(SilentExitExceptionHandler.java:92) at org.springframework.boot.devtools.restart.Restarter.immediateRestart(Restarter.java:179) diff --git a/logs/mt-pay.2025-12-25.log b/logs/mt-pay.2025-12-25.log index da93647..1769e98 100644 --- a/logs/mt-pay.2025-12-25.log +++ b/logs/mt-pay.2025-12-25.log @@ -14429,3 +14429,1235 @@ org.springframework.boot.devtools.restart.SilentExitExceptionHandler$SilentExitE 2025-12-25 16:48:15.067 [http-nio-8082-exec-1] DEBUG c.mtkj.mtpay.mapper.MtProductLinkMapper.selectList - <== Total: 2 2025-12-25 16:48:15.070 [http-nio-8082-exec-1] DEBUG com.mtkj.mtpay.service.impl.ProductServiceImpl - 批量查询到商品链接数量: 2, 涉及商品数: 2 2025-12-25 16:48:15.096 [http-nio-8082-exec-1] INFO com.mtkj.mtpay.service.impl.ProductServiceImpl - 获取商品列表成功,商品数量: 2, 耗时: 2615ms +2025-12-25 18:03:58.088 [Thread-8] INFO org.apache.coyote.http11.Http11NioProtocol - Stopping ProtocolHandler ["http-nio-8082"] +2025-12-25 18:03:58.347 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ MTKJ PAY 支付系统正在启动... ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +2025-12-25 18:03:58.440 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - Starting MtkjpayApplication using Java 17.0.12 with PID 25608 (E:\MTKJPAY\mt-startup\target\classes started by 18969 in E:\MTKJPAY) +2025-12-25 18:03:58.440 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - The following 1 profile is active: "dev" +2025-12-25 18:03:59.281 [restartedMain] INFO org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8082"] +2025-12-25 18:03:59.282 [restartedMain] INFO org.apache.catalina.core.StandardService - Starting service [Tomcat] +2025-12-25 18:03:59.282 [restartedMain] INFO org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.16] +2025-12-25 18:03:59.317 [restartedMain] INFO o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-12-25 18:03:59.345 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - ═══════════════════════════════════════════════════════════ +2025-12-25 18:03:59.345 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - PayPal配置加载验证: +2025-12-25 18:03:59.346 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Client ID: ✅ 已配置 (AdGYUZpvLuHR30dybOAp...) +2025-12-25 18:03:59.346 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Client Secret: ✅ 已配置 (ENblspyRmwsOU_PWFurl...) +2025-12-25 18:03:59.346 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Mode: sandbox +2025-12-25 18:03:59.347 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Enabled: true +2025-12-25 18:03:59.347 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Base URL: https://api-m.sandbox.paypal.com +2025-12-25 18:03:59.347 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Webhook URL: ✅ https://2646b437.r33.cpolar.top/api/paypal/webhook +2025-12-25 18:03:59.347 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - ═══════════════════════════════════════════════════════════ +2025-12-25 18:03:59.366 [restartedMain] INFO com.mtkj.mtpay.config.MyBatisPlusConfig - 初始化MyBatis-Plus分页插件,数据库类型: MYSQL +2025-12-25 18:03:59.366 [restartedMain] INFO com.mtkj.mtpay.config.MyBatisPlusConfig - MyBatis-Plus分页插件配置完成 +2025-12-25 18:03:59.372 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - 初始化Druid主数据源 +2025-12-25 18:03:59.372 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - 配置属性 - URL: jdbc:mysql://rm-j6c3u06k2afwn8hxw6o.mysql.rds.aliyuncs.com:3306/mtpay?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai, Username: mtkj2025 +2025-12-25 18:03:59.373 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - Druid主数据源配置完成,URL: jdbc:mysql://rm-j6c3u06k2afwn8hxw6o.mysql.rds.aliyuncs.com:3306/mtpay?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai +2025-12-25 18:03:59.960 [restartedMain] WARN o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'customerOrderController': Resolution of declared constructors on bean Class [com.mtkj.mtpay.controller.CustomerOrderController] from ClassLoader [org.springframework.boot.devtools.restart.classloader.RestartClassLoader@1a78dbd2] failed +2025-12-25 18:03:59.961 [restartedMain] INFO org.apache.catalina.core.StandardService - Stopping service [Tomcat] +2025-12-25 18:04:00.011 [restartedMain] ERROR org.springframework.boot.SpringApplication - Application run failed +org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'customerOrderController': Resolution of declared constructors on bean Class [com.mtkj.mtpay.controller.CustomerOrderController] from ClassLoader [org.springframework.boot.devtools.restart.classloader.RestartClassLoader@1a78dbd2] failed + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:368) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1295) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1190) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:946) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: java.lang.NoClassDefFoundError: com/mtkj/mtpay/service/CustomerOrderService + at java.base/java.lang.Class.getDeclaredConstructors0(Native Method) + at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3373) + at java.base/java.lang.Class.getDeclaredConstructors(Class.java:2555) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:363) + ... 21 common frames omitted +Caused by: java.lang.ClassNotFoundException: com.mtkj.mtpay.service.CustomerOrderService + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:121) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + ... 25 common frames omitted +2025-12-25 18:04:00.016 [restartedMain] ERROR com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ ❌ MTKJ PAY 支付系统启动失败! ❌ ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'customerOrderController': Resolution of declared constructors on bean Class [com.mtkj.mtpay.controller.CustomerOrderController] from ClassLoader [org.springframework.boot.devtools.restart.classloader.RestartClassLoader@1a78dbd2] failed + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:368) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1295) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1190) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:946) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: java.lang.NoClassDefFoundError: com/mtkj/mtpay/service/CustomerOrderService + at java.base/java.lang.Class.getDeclaredConstructors0(Native Method) + at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3373) + at java.base/java.lang.Class.getDeclaredConstructors(Class.java:2555) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:363) + ... 21 common frames omitted +Caused by: java.lang.ClassNotFoundException: com.mtkj.mtpay.service.CustomerOrderService + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:121) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + ... 25 common frames omitted +2025-12-25 18:04:29.602 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ MTKJ PAY 支付系统正在启动... ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +2025-12-25 18:04:29.674 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - Starting MtkjpayApplication using Java 17.0.12 with PID 25608 (E:\MTKJPAY\mt-startup\target\classes started by 18969 in E:\MTKJPAY) +2025-12-25 18:04:29.674 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - The following 1 profile is active: "dev" +2025-12-25 18:04:30.322 [restartedMain] INFO org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8082"] +2025-12-25 18:04:30.323 [restartedMain] INFO org.apache.catalina.core.StandardService - Starting service [Tomcat] +2025-12-25 18:04:30.323 [restartedMain] INFO org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.16] +2025-12-25 18:04:30.374 [restartedMain] INFO o.a.c.c.ContainerBase.[Tomcat-1].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-12-25 18:04:30.398 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - ═══════════════════════════════════════════════════════════ +2025-12-25 18:04:30.398 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - PayPal配置加载验证: +2025-12-25 18:04:30.399 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Client ID: ✅ 已配置 (AdGYUZpvLuHR30dybOAp...) +2025-12-25 18:04:30.399 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Client Secret: ✅ 已配置 (ENblspyRmwsOU_PWFurl...) +2025-12-25 18:04:30.399 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Mode: sandbox +2025-12-25 18:04:30.399 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Enabled: true +2025-12-25 18:04:30.399 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Base URL: https://api-m.sandbox.paypal.com +2025-12-25 18:04:30.399 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Webhook URL: ✅ https://2646b437.r33.cpolar.top/api/paypal/webhook +2025-12-25 18:04:30.399 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - ═══════════════════════════════════════════════════════════ +2025-12-25 18:04:30.412 [restartedMain] INFO com.mtkj.mtpay.config.MyBatisPlusConfig - 初始化MyBatis-Plus分页插件,数据库类型: MYSQL +2025-12-25 18:04:30.413 [restartedMain] INFO com.mtkj.mtpay.config.MyBatisPlusConfig - MyBatis-Plus分页插件配置完成 +2025-12-25 18:04:30.418 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - 初始化Druid主数据源 +2025-12-25 18:04:30.418 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - 配置属性 - URL: jdbc:mysql://rm-j6c3u06k2afwn8hxw6o.mysql.rds.aliyuncs.com:3306/mtpay?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai, Username: mtkj2025 +2025-12-25 18:04:30.419 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - Druid主数据源配置完成,URL: jdbc:mysql://rm-j6c3u06k2afwn8hxw6o.mysql.rds.aliyuncs.com:3306/mtpay?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai +2025-12-25 18:04:30.858 [restartedMain] WARN o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'payPalController' defined in file [E:\MTKJPAY\mt-pay\target\classes\com\mtkj\mtpay\controller\PayPalController.class]: Unsatisfied dependency expressed through constructor parameter 1: No qualifying bean of type 'com.mtkj.mtpay.service.CustomerOrderService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} +2025-12-25 18:04:30.859 [restartedMain] INFO org.apache.catalina.core.StandardService - Stopping service [Tomcat] +2025-12-25 18:04:30.885 [restartedMain] ERROR o.s.b.diagnostics.LoggingFailureAnalysisReporter - + +*************************** +APPLICATION FAILED TO START +*************************** + +Description: + +Parameter 1 of constructor in com.mtkj.mtpay.controller.PayPalController required a bean of type 'com.mtkj.mtpay.service.CustomerOrderService' that could not be found. + + +Action: + +Consider defining a bean of type 'com.mtkj.mtpay.service.CustomerOrderService' in your configuration. + +2025-12-25 18:04:30.885 [restartedMain] ERROR com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ ❌ MTKJ PAY 支付系统启动失败! ❌ ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'payPalController' defined in file [E:\MTKJPAY\mt-pay\target\classes\com\mtkj\mtpay\controller\PayPalController.class]: Unsatisfied dependency expressed through constructor parameter 1: No qualifying bean of type 'com.mtkj.mtpay.service.CustomerOrderService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:802) + at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:241) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1356) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1193) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:946) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mtkj.mtpay.service.CustomerOrderService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} + at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1878) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1404) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1348) + at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:911) + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) + ... 22 common frames omitted +2025-12-25 18:04:33.415 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ MTKJ PAY 支付系统正在启动... ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +2025-12-25 18:04:33.459 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - Starting MtkjpayApplication using Java 17.0.12 with PID 25608 (E:\MTKJPAY\mt-startup\target\classes started by 18969 in E:\MTKJPAY) +2025-12-25 18:04:33.459 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - The following 1 profile is active: "dev" +2025-12-25 18:04:34.008 [restartedMain] INFO org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8082"] +2025-12-25 18:04:34.009 [restartedMain] INFO org.apache.catalina.core.StandardService - Starting service [Tomcat] +2025-12-25 18:04:34.009 [restartedMain] INFO org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.16] +2025-12-25 18:04:34.061 [restartedMain] INFO o.a.c.c.ContainerBase.[Tomcat-2].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-12-25 18:04:34.082 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - ═══════════════════════════════════════════════════════════ +2025-12-25 18:04:34.082 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - PayPal配置加载验证: +2025-12-25 18:04:34.083 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Client ID: ✅ 已配置 (AdGYUZpvLuHR30dybOAp...) +2025-12-25 18:04:34.083 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Client Secret: ✅ 已配置 (ENblspyRmwsOU_PWFurl...) +2025-12-25 18:04:34.083 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Mode: sandbox +2025-12-25 18:04:34.083 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Enabled: true +2025-12-25 18:04:34.083 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Base URL: https://api-m.sandbox.paypal.com +2025-12-25 18:04:34.083 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Webhook URL: ✅ https://2646b437.r33.cpolar.top/api/paypal/webhook +2025-12-25 18:04:34.083 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - ═══════════════════════════════════════════════════════════ +2025-12-25 18:04:34.094 [restartedMain] INFO com.mtkj.mtpay.config.MyBatisPlusConfig - 初始化MyBatis-Plus分页插件,数据库类型: MYSQL +2025-12-25 18:04:34.095 [restartedMain] INFO com.mtkj.mtpay.config.MyBatisPlusConfig - MyBatis-Plus分页插件配置完成 +2025-12-25 18:04:34.099 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - 初始化Druid主数据源 +2025-12-25 18:04:34.099 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - 配置属性 - URL: jdbc:mysql://rm-j6c3u06k2afwn8hxw6o.mysql.rds.aliyuncs.com:3306/mtpay?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai, Username: mtkj2025 +2025-12-25 18:04:34.099 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - Druid主数据源配置完成,URL: jdbc:mysql://rm-j6c3u06k2afwn8hxw6o.mysql.rds.aliyuncs.com:3306/mtpay?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai +2025-12-25 18:04:34.401 [restartedMain] WARN o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'customerOrderController' defined in file [E:\MTKJPAY\mt-pay\target\classes\com\mtkj\mtpay\controller\CustomerOrderController.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'com.mtkj.mtpay.service.CustomerOrderService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} +2025-12-25 18:04:34.402 [restartedMain] INFO org.apache.catalina.core.StandardService - Stopping service [Tomcat] +2025-12-25 18:04:34.415 [restartedMain] ERROR o.s.b.diagnostics.LoggingFailureAnalysisReporter - + +*************************** +APPLICATION FAILED TO START +*************************** + +Description: + +Parameter 0 of constructor in com.mtkj.mtpay.controller.CustomerOrderController required a bean of type 'com.mtkj.mtpay.service.CustomerOrderService' that could not be found. + + +Action: + +Consider defining a bean of type 'com.mtkj.mtpay.service.CustomerOrderService' in your configuration. + +2025-12-25 18:04:34.415 [restartedMain] ERROR com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ ❌ MTKJ PAY 支付系统启动失败! ❌ ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'customerOrderController' defined in file [E:\MTKJPAY\mt-pay\target\classes\com\mtkj\mtpay\controller\CustomerOrderController.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'com.mtkj.mtpay.service.CustomerOrderService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:802) + at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:241) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1356) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1193) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:946) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mtkj.mtpay.service.CustomerOrderService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} + at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1878) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1404) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1348) + at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:911) + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) + ... 22 common frames omitted +2025-12-25 18:04:44.251 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ MTKJ PAY 支付系统正在启动... ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +2025-12-25 18:04:44.352 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - Starting MtkjpayApplication using Java 17.0.12 with PID 25608 (E:\MTKJPAY\mt-startup\target\classes started by 18969 in E:\MTKJPAY) +2025-12-25 18:04:44.352 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - The following 1 profile is active: "dev" +2025-12-25 18:04:44.669 [restartedMain] WARN o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: java.lang.IllegalArgumentException: Could not find class [com.mtkj.mtpay.config.PingPongProperties] +2025-12-25 18:04:44.680 [restartedMain] ERROR org.springframework.boot.SpringApplication - Application run failed +java.lang.IllegalArgumentException: Could not find class [com.mtkj.mtpay.config.PingPongProperties] + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:355) + at org.springframework.core.annotation.TypeMappedAnnotation.adapt(TypeMappedAnnotation.java:465) + at org.springframework.core.annotation.TypeMappedAnnotation.getValue(TypeMappedAnnotation.java:390) + at org.springframework.core.annotation.TypeMappedAnnotation.getAttributeValue(TypeMappedAnnotation.java:371) + at org.springframework.core.annotation.AbstractMergedAnnotation.getRequiredAttributeValue(AbstractMergedAnnotation.java:215) + at org.springframework.core.annotation.AbstractMergedAnnotation.getClassArray(AbstractMergedAnnotation.java:153) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.lambda$getTypes$0(EnableConfigurationPropertiesRegistrar.java:55) + at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273) + at org.springframework.core.annotation.MergedAnnotationsCollection$AnnotationsSpliterator.tryAdvance(MergedAnnotationsCollection.java:254) + at java.base/java.util.Spliterator.forEachRemaining(Spliterator.java:332) + at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) + at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) + at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) + at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) + at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.getTypes(EnableConfigurationPropertiesRegistrar.java:57) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.registerBeanDefinitions(EnableConfigurationPropertiesRegistrar.java:49) + at org.springframework.context.annotation.ImportBeanDefinitionRegistrar.registerBeanDefinitions(ImportBeanDefinitionRegistrar.java:86) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.lambda$loadBeanDefinitionsFromRegistrars$1(ConfigurationClassBeanDefinitionReader.java:376) + at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars(ConfigurationClassBeanDefinitionReader.java:375) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:148) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:120) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:428) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:289) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:349) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:118) + at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:775) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:597) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: java.lang.ClassNotFoundException: com.mtkj.mtpay.config.PingPongProperties + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:121) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.util.ClassUtils.forName(ClassUtils.java:304) + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:345) + ... 38 common frames omitted +2025-12-25 18:04:44.681 [restartedMain] ERROR com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ ❌ MTKJ PAY 支付系统启动失败! ❌ ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +java.lang.IllegalArgumentException: Could not find class [com.mtkj.mtpay.config.PingPongProperties] + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:355) + at org.springframework.core.annotation.TypeMappedAnnotation.adapt(TypeMappedAnnotation.java:465) + at org.springframework.core.annotation.TypeMappedAnnotation.getValue(TypeMappedAnnotation.java:390) + at org.springframework.core.annotation.TypeMappedAnnotation.getAttributeValue(TypeMappedAnnotation.java:371) + at org.springframework.core.annotation.AbstractMergedAnnotation.getRequiredAttributeValue(AbstractMergedAnnotation.java:215) + at org.springframework.core.annotation.AbstractMergedAnnotation.getClassArray(AbstractMergedAnnotation.java:153) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.lambda$getTypes$0(EnableConfigurationPropertiesRegistrar.java:55) + at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273) + at org.springframework.core.annotation.MergedAnnotationsCollection$AnnotationsSpliterator.tryAdvance(MergedAnnotationsCollection.java:254) + at java.base/java.util.Spliterator.forEachRemaining(Spliterator.java:332) + at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) + at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) + at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) + at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) + at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.getTypes(EnableConfigurationPropertiesRegistrar.java:57) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.registerBeanDefinitions(EnableConfigurationPropertiesRegistrar.java:49) + at org.springframework.context.annotation.ImportBeanDefinitionRegistrar.registerBeanDefinitions(ImportBeanDefinitionRegistrar.java:86) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.lambda$loadBeanDefinitionsFromRegistrars$1(ConfigurationClassBeanDefinitionReader.java:376) + at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars(ConfigurationClassBeanDefinitionReader.java:375) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:148) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:120) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:428) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:289) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:349) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:118) + at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:775) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:597) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: java.lang.ClassNotFoundException: com.mtkj.mtpay.config.PingPongProperties + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:121) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.util.ClassUtils.forName(ClassUtils.java:304) + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:345) + ... 38 common frames omitted +2025-12-25 18:04:53.163 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ MTKJ PAY 支付系统正在启动... ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +2025-12-25 18:04:53.454 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - Starting MtkjpayApplication using Java 17.0.12 with PID 25608 (E:\MTKJPAY\mt-startup\target\classes started by 18969 in E:\MTKJPAY) +2025-12-25 18:04:53.455 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - The following 1 profile is active: "dev" +2025-12-25 18:04:53.839 [restartedMain] WARN o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: java.lang.IllegalArgumentException: Could not find class [com.mtkj.mtpay.config.AliyunOSSProperties] +2025-12-25 18:04:53.850 [restartedMain] ERROR org.springframework.boot.SpringApplication - Application run failed +java.lang.IllegalArgumentException: Could not find class [com.mtkj.mtpay.config.AliyunOSSProperties] + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:355) + at org.springframework.core.annotation.TypeMappedAnnotation.adapt(TypeMappedAnnotation.java:465) + at org.springframework.core.annotation.TypeMappedAnnotation.getValue(TypeMappedAnnotation.java:390) + at org.springframework.core.annotation.TypeMappedAnnotation.getAttributeValue(TypeMappedAnnotation.java:371) + at org.springframework.core.annotation.AbstractMergedAnnotation.getRequiredAttributeValue(AbstractMergedAnnotation.java:215) + at org.springframework.core.annotation.AbstractMergedAnnotation.getClassArray(AbstractMergedAnnotation.java:153) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.lambda$getTypes$0(EnableConfigurationPropertiesRegistrar.java:55) + at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273) + at org.springframework.core.annotation.MergedAnnotationsCollection$AnnotationsSpliterator.tryAdvance(MergedAnnotationsCollection.java:254) + at java.base/java.util.Spliterator.forEachRemaining(Spliterator.java:332) + at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) + at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) + at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) + at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) + at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.getTypes(EnableConfigurationPropertiesRegistrar.java:57) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.registerBeanDefinitions(EnableConfigurationPropertiesRegistrar.java:49) + at org.springframework.context.annotation.ImportBeanDefinitionRegistrar.registerBeanDefinitions(ImportBeanDefinitionRegistrar.java:86) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.lambda$loadBeanDefinitionsFromRegistrars$1(ConfigurationClassBeanDefinitionReader.java:376) + at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars(ConfigurationClassBeanDefinitionReader.java:375) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:148) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:120) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:428) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:289) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:349) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:118) + at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:775) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:597) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: java.lang.ClassNotFoundException: com.mtkj.mtpay.config.AliyunOSSProperties + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:121) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.util.ClassUtils.forName(ClassUtils.java:304) + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:345) + ... 38 common frames omitted +2025-12-25 18:04:53.851 [restartedMain] ERROR com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ ❌ MTKJ PAY 支付系统启动失败! ❌ ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +java.lang.IllegalArgumentException: Could not find class [com.mtkj.mtpay.config.AliyunOSSProperties] + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:355) + at org.springframework.core.annotation.TypeMappedAnnotation.adapt(TypeMappedAnnotation.java:465) + at org.springframework.core.annotation.TypeMappedAnnotation.getValue(TypeMappedAnnotation.java:390) + at org.springframework.core.annotation.TypeMappedAnnotation.getAttributeValue(TypeMappedAnnotation.java:371) + at org.springframework.core.annotation.AbstractMergedAnnotation.getRequiredAttributeValue(AbstractMergedAnnotation.java:215) + at org.springframework.core.annotation.AbstractMergedAnnotation.getClassArray(AbstractMergedAnnotation.java:153) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.lambda$getTypes$0(EnableConfigurationPropertiesRegistrar.java:55) + at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273) + at org.springframework.core.annotation.MergedAnnotationsCollection$AnnotationsSpliterator.tryAdvance(MergedAnnotationsCollection.java:254) + at java.base/java.util.Spliterator.forEachRemaining(Spliterator.java:332) + at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) + at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) + at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) + at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) + at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.getTypes(EnableConfigurationPropertiesRegistrar.java:57) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.registerBeanDefinitions(EnableConfigurationPropertiesRegistrar.java:49) + at org.springframework.context.annotation.ImportBeanDefinitionRegistrar.registerBeanDefinitions(ImportBeanDefinitionRegistrar.java:86) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.lambda$loadBeanDefinitionsFromRegistrars$1(ConfigurationClassBeanDefinitionReader.java:376) + at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars(ConfigurationClassBeanDefinitionReader.java:375) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:148) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:120) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:428) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:289) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:349) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:118) + at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:775) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:597) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: java.lang.ClassNotFoundException: com.mtkj.mtpay.config.AliyunOSSProperties + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:121) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.util.ClassUtils.forName(ClassUtils.java:304) + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:345) + ... 38 common frames omitted +2025-12-25 18:04:55.784 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ MTKJ PAY 支付系统正在启动... ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +2025-12-25 18:04:55.820 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - Starting MtkjpayApplication using Java 17.0.12 with PID 25608 (E:\MTKJPAY\mt-startup\target\classes started by 18969 in E:\MTKJPAY) +2025-12-25 18:04:55.820 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - The following 1 profile is active: "dev" +2025-12-25 18:04:56.182 [restartedMain] INFO org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8082"] +2025-12-25 18:04:56.183 [restartedMain] INFO org.apache.catalina.core.StandardService - Starting service [Tomcat] +2025-12-25 18:04:56.183 [restartedMain] INFO org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.16] +2025-12-25 18:04:56.202 [restartedMain] INFO o.a.c.c.ContainerBase.[Tomcat-3].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-12-25 18:04:56.213 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - ═══════════════════════════════════════════════════════════ +2025-12-25 18:04:56.213 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - PayPal配置加载验证: +2025-12-25 18:04:56.214 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Client ID: ✅ 已配置 (AdGYUZpvLuHR30dybOAp...) +2025-12-25 18:04:56.214 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Client Secret: ✅ 已配置 (ENblspyRmwsOU_PWFurl...) +2025-12-25 18:04:56.214 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Mode: sandbox +2025-12-25 18:04:56.214 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Enabled: true +2025-12-25 18:04:56.214 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Base URL: https://api-m.sandbox.paypal.com +2025-12-25 18:04:56.214 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Webhook URL: ✅ https://2646b437.r33.cpolar.top/api/paypal/webhook +2025-12-25 18:04:56.214 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - ═══════════════════════════════════════════════════════════ +2025-12-25 18:04:56.223 [restartedMain] INFO com.mtkj.mtpay.config.MyBatisPlusConfig - 初始化MyBatis-Plus分页插件,数据库类型: MYSQL +2025-12-25 18:04:56.224 [restartedMain] INFO com.mtkj.mtpay.config.MyBatisPlusConfig - MyBatis-Plus分页插件配置完成 +2025-12-25 18:04:56.227 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - 初始化Druid主数据源 +2025-12-25 18:04:56.227 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - 配置属性 - URL: jdbc:mysql://rm-j6c3u06k2afwn8hxw6o.mysql.rds.aliyuncs.com:3306/mtpay?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai, Username: mtkj2025 +2025-12-25 18:04:56.227 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - Druid主数据源配置完成,URL: jdbc:mysql://rm-j6c3u06k2afwn8hxw6o.mysql.rds.aliyuncs.com:3306/mtpay?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai +2025-12-25 18:04:56.476 [restartedMain] WARN o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'customerOrderController' defined in file [E:\MTKJPAY\mt-pay\target\classes\com\mtkj\mtpay\controller\CustomerOrderController.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'com.mtkj.mtpay.service.CustomerOrderService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} +2025-12-25 18:04:56.477 [restartedMain] INFO org.apache.catalina.core.StandardService - Stopping service [Tomcat] +2025-12-25 18:04:56.489 [restartedMain] ERROR o.s.b.diagnostics.LoggingFailureAnalysisReporter - + +*************************** +APPLICATION FAILED TO START +*************************** + +Description: + +Parameter 0 of constructor in com.mtkj.mtpay.controller.CustomerOrderController required a bean of type 'com.mtkj.mtpay.service.CustomerOrderService' that could not be found. + + +Action: + +Consider defining a bean of type 'com.mtkj.mtpay.service.CustomerOrderService' in your configuration. + +2025-12-25 18:04:56.489 [restartedMain] ERROR com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ ❌ MTKJ PAY 支付系统启动失败! ❌ ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'customerOrderController' defined in file [E:\MTKJPAY\mt-pay\target\classes\com\mtkj\mtpay\controller\CustomerOrderController.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'com.mtkj.mtpay.service.CustomerOrderService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:802) + at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:241) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1356) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1193) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:946) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mtkj.mtpay.service.CustomerOrderService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} + at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1878) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1404) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1348) + at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:911) + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) + ... 22 common frames omitted +2025-12-25 18:06:09.804 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ MTKJ PAY 支付系统正在启动... ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +2025-12-25 18:06:09.852 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - Starting MtkjpayApplication using Java 17.0.12 with PID 25608 (E:\MTKJPAY\mt-startup\target\classes started by 18969 in E:\MTKJPAY) +2025-12-25 18:06:09.852 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - The following 1 profile is active: "dev" +2025-12-25 18:06:10.210 [restartedMain] WARN o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: java.lang.IllegalArgumentException: Could not find class [com.mtkj.mtpay.config.PingPongProperties] +2025-12-25 18:06:10.230 [restartedMain] ERROR org.springframework.boot.SpringApplication - Application run failed +java.lang.IllegalArgumentException: Could not find class [com.mtkj.mtpay.config.PingPongProperties] + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:355) + at org.springframework.core.annotation.TypeMappedAnnotation.adapt(TypeMappedAnnotation.java:465) + at org.springframework.core.annotation.TypeMappedAnnotation.getValue(TypeMappedAnnotation.java:390) + at org.springframework.core.annotation.TypeMappedAnnotation.getAttributeValue(TypeMappedAnnotation.java:371) + at org.springframework.core.annotation.AbstractMergedAnnotation.getRequiredAttributeValue(AbstractMergedAnnotation.java:215) + at org.springframework.core.annotation.AbstractMergedAnnotation.getClassArray(AbstractMergedAnnotation.java:153) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.lambda$getTypes$0(EnableConfigurationPropertiesRegistrar.java:55) + at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273) + at org.springframework.core.annotation.MergedAnnotationsCollection$AnnotationsSpliterator.tryAdvance(MergedAnnotationsCollection.java:254) + at java.base/java.util.Spliterator.forEachRemaining(Spliterator.java:332) + at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) + at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) + at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) + at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) + at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.getTypes(EnableConfigurationPropertiesRegistrar.java:57) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.registerBeanDefinitions(EnableConfigurationPropertiesRegistrar.java:49) + at org.springframework.context.annotation.ImportBeanDefinitionRegistrar.registerBeanDefinitions(ImportBeanDefinitionRegistrar.java:86) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.lambda$loadBeanDefinitionsFromRegistrars$1(ConfigurationClassBeanDefinitionReader.java:376) + at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars(ConfigurationClassBeanDefinitionReader.java:375) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:148) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:120) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:428) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:289) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:349) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:118) + at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:775) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:597) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: java.lang.ClassNotFoundException: com.mtkj.mtpay.config.PingPongProperties + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:121) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.util.ClassUtils.forName(ClassUtils.java:304) + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:345) + ... 38 common frames omitted +2025-12-25 18:06:10.230 [restartedMain] ERROR com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ ❌ MTKJ PAY 支付系统启动失败! ❌ ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +java.lang.IllegalArgumentException: Could not find class [com.mtkj.mtpay.config.PingPongProperties] + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:355) + at org.springframework.core.annotation.TypeMappedAnnotation.adapt(TypeMappedAnnotation.java:465) + at org.springframework.core.annotation.TypeMappedAnnotation.getValue(TypeMappedAnnotation.java:390) + at org.springframework.core.annotation.TypeMappedAnnotation.getAttributeValue(TypeMappedAnnotation.java:371) + at org.springframework.core.annotation.AbstractMergedAnnotation.getRequiredAttributeValue(AbstractMergedAnnotation.java:215) + at org.springframework.core.annotation.AbstractMergedAnnotation.getClassArray(AbstractMergedAnnotation.java:153) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.lambda$getTypes$0(EnableConfigurationPropertiesRegistrar.java:55) + at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273) + at org.springframework.core.annotation.MergedAnnotationsCollection$AnnotationsSpliterator.tryAdvance(MergedAnnotationsCollection.java:254) + at java.base/java.util.Spliterator.forEachRemaining(Spliterator.java:332) + at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) + at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) + at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) + at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) + at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.getTypes(EnableConfigurationPropertiesRegistrar.java:57) + at org.springframework.boot.context.properties.EnableConfigurationPropertiesRegistrar.registerBeanDefinitions(EnableConfigurationPropertiesRegistrar.java:49) + at org.springframework.context.annotation.ImportBeanDefinitionRegistrar.registerBeanDefinitions(ImportBeanDefinitionRegistrar.java:86) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.lambda$loadBeanDefinitionsFromRegistrars$1(ConfigurationClassBeanDefinitionReader.java:376) + at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars(ConfigurationClassBeanDefinitionReader.java:375) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:148) + at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:120) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:428) + at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:289) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:349) + at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:118) + at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:775) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:597) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: java.lang.ClassNotFoundException: com.mtkj.mtpay.config.PingPongProperties + at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) + at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:121) + at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) + at java.base/java.lang.Class.forName0(Native Method) + at java.base/java.lang.Class.forName(Class.java:467) + at org.springframework.util.ClassUtils.forName(ClassUtils.java:304) + at org.springframework.util.ClassUtils.resolveClassName(ClassUtils.java:345) + ... 38 common frames omitted +2025-12-25 18:06:19.845 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ MTKJ PAY 支付系统正在启动... ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +2025-12-25 18:06:19.920 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - Starting MtkjpayApplication using Java 17.0.12 with PID 25608 (E:\MTKJPAY\mt-startup\target\classes started by 18969 in E:\MTKJPAY) +2025-12-25 18:06:19.921 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - The following 1 profile is active: "dev" +2025-12-25 18:06:20.517 [restartedMain] INFO org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8082"] +2025-12-25 18:06:20.518 [restartedMain] INFO org.apache.catalina.core.StandardService - Starting service [Tomcat] +2025-12-25 18:06:20.518 [restartedMain] INFO org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.16] +2025-12-25 18:06:20.544 [restartedMain] INFO o.a.c.c.ContainerBase.[Tomcat-4].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-12-25 18:06:20.562 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - ═══════════════════════════════════════════════════════════ +2025-12-25 18:06:20.562 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - PayPal配置加载验证: +2025-12-25 18:06:20.562 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Client ID: ✅ 已配置 (AdGYUZpvLuHR30dybOAp...) +2025-12-25 18:06:20.563 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Client Secret: ✅ 已配置 (ENblspyRmwsOU_PWFurl...) +2025-12-25 18:06:20.563 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Mode: sandbox +2025-12-25 18:06:20.563 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Enabled: true +2025-12-25 18:06:20.563 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Base URL: https://api-m.sandbox.paypal.com +2025-12-25 18:06:20.563 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Webhook URL: ✅ https://2646b437.r33.cpolar.top/api/paypal/webhook +2025-12-25 18:06:20.563 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - ═══════════════════════════════════════════════════════════ +2025-12-25 18:06:20.573 [restartedMain] INFO com.mtkj.mtpay.config.MyBatisPlusConfig - 初始化MyBatis-Plus分页插件,数据库类型: MYSQL +2025-12-25 18:06:20.574 [restartedMain] INFO com.mtkj.mtpay.config.MyBatisPlusConfig - MyBatis-Plus分页插件配置完成 +2025-12-25 18:06:20.577 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - 初始化Druid主数据源 +2025-12-25 18:06:20.577 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - 配置属性 - URL: jdbc:mysql://rm-j6c3u06k2afwn8hxw6o.mysql.rds.aliyuncs.com:3306/mtpay?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai, Username: mtkj2025 +2025-12-25 18:06:20.577 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - Druid主数据源配置完成,URL: jdbc:mysql://rm-j6c3u06k2afwn8hxw6o.mysql.rds.aliyuncs.com:3306/mtpay?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai +2025-12-25 18:06:21.004 [restartedMain] WARN o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'productController': Unsatisfied dependency expressed through field 'ossService': Error creating bean with name 'ossServiceImpl': Unsatisfied dependency expressed through field 'ossProperties': No qualifying bean of type 'com.mtkj.mtpay.config.AliyunOSSProperties' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} +2025-12-25 18:06:21.004 [restartedMain] INFO org.apache.catalina.core.StandardService - Stopping service [Tomcat] +2025-12-25 18:06:21.017 [restartedMain] ERROR o.s.b.diagnostics.LoggingFailureAnalysisReporter - + +*************************** +APPLICATION FAILED TO START +*************************** + +Description: + +Field ossProperties in com.mtkj.mtpay.service.impl.OssServiceImpl required a bean of type 'com.mtkj.mtpay.config.AliyunOSSProperties' that could not be found. + +The injection point has the following annotations: + - @org.springframework.beans.factory.annotation.Autowired(required=true) + + +Action: + +Consider defining a bean of type 'com.mtkj.mtpay.config.AliyunOSSProperties' in your configuration. + +2025-12-25 18:06:21.017 [restartedMain] ERROR com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ ❌ MTKJ PAY 支付系统启动失败! ❌ ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'productController': Unsatisfied dependency expressed through field 'ossService': Error creating bean with name 'ossServiceImpl': Unsatisfied dependency expressed through field 'ossProperties': No qualifying bean of type 'com.mtkj.mtpay.config.AliyunOSSProperties' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:772) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:752) + at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:145) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:493) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1420) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:946) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) +Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'ossServiceImpl': Unsatisfied dependency expressed through field 'ossProperties': No qualifying bean of type 'com.mtkj.mtpay.config.AliyunOSSProperties' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:772) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:752) + at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:145) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:493) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1420) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:600) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) + at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1441) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1348) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:769) + ... 23 common frames omitted +Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mtkj.mtpay.config.AliyunOSSProperties' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} + at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1878) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1404) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1348) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:769) + ... 37 common frames omitted +2025-12-25 18:06:22.478 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ MTKJ PAY 支付系统正在启动... ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +2025-12-25 18:06:22.513 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - Starting MtkjpayApplication using Java 17.0.12 with PID 25608 (E:\MTKJPAY\mt-startup\target\classes started by 18969 in E:\MTKJPAY) +2025-12-25 18:06:22.514 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - The following 1 profile is active: "dev" +2025-12-25 18:06:22.884 [restartedMain] INFO org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8082"] +2025-12-25 18:06:22.884 [restartedMain] INFO org.apache.catalina.core.StandardService - Starting service [Tomcat] +2025-12-25 18:06:22.884 [restartedMain] INFO org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.16] +2025-12-25 18:06:22.929 [restartedMain] INFO o.a.c.c.ContainerBase.[Tomcat-5].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-12-25 18:06:22.942 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - ═══════════════════════════════════════════════════════════ +2025-12-25 18:06:22.942 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - PayPal配置加载验证: +2025-12-25 18:06:22.942 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Client ID: ✅ 已配置 (AdGYUZpvLuHR30dybOAp...) +2025-12-25 18:06:22.942 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Client Secret: ✅ 已配置 (ENblspyRmwsOU_PWFurl...) +2025-12-25 18:06:22.942 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Mode: sandbox +2025-12-25 18:06:22.942 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Enabled: true +2025-12-25 18:06:22.942 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Base URL: https://api-m.sandbox.paypal.com +2025-12-25 18:06:22.942 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Webhook URL: ✅ https://2646b437.r33.cpolar.top/api/paypal/webhook +2025-12-25 18:06:22.942 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - ═══════════════════════════════════════════════════════════ +2025-12-25 18:06:22.950 [restartedMain] INFO com.mtkj.mtpay.config.MyBatisPlusConfig - 初始化MyBatis-Plus分页插件,数据库类型: MYSQL +2025-12-25 18:06:22.950 [restartedMain] INFO com.mtkj.mtpay.config.MyBatisPlusConfig - MyBatis-Plus分页插件配置完成 +2025-12-25 18:06:22.952 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - 初始化Druid主数据源 +2025-12-25 18:06:22.952 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - 配置属性 - URL: jdbc:mysql://rm-j6c3u06k2afwn8hxw6o.mysql.rds.aliyuncs.com:3306/mtpay?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai, Username: mtkj2025 +2025-12-25 18:06:22.952 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - Druid主数据源配置完成,URL: jdbc:mysql://rm-j6c3u06k2afwn8hxw6o.mysql.rds.aliyuncs.com:3306/mtpay?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai +2025-12-25 18:06:23.587 [restartedMain] INFO com.mtkj.mtpay.config.RestClientConfig - 初始化RestClient,配置JSON消息转换器 +2025-12-25 18:06:23.597 [restartedMain] INFO com.mtkj.mtpay.config.RestClientConfig - RestClient配置完成 +2025-12-25 18:06:23.620 [restartedMain] INFO com.mtkj.mtpay.config.AsyncConfig - PayPal Webhook异步处理线程池初始化完成 +2025-12-25 18:06:23.698 [restartedMain] INFO com.mtkj.mtpay.config.WebConfig - 配置跨域访问,路径: /api/**, 允许所有来源 +2025-12-25 18:06:23.698 [restartedMain] INFO com.mtkj.mtpay.config.WebConfig - 跨域配置完成 +2025-12-25 18:06:23.985 [restartedMain] INFO org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8082"] +2025-12-25 18:06:24.029 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - Started MtkjpayApplication in 1.546 seconds (process running for 4703.717) +2025-12-25 18:06:24.040 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ ✅ MTKJ PAY 支付系统启动成功! ✅ ║ +║ ║ +╠══════════════════════════════════════════════════════════╣ +║ 应用信息 ║ +╠══════════════════════════════════════════════════════════╣ +║ 应用名称: {:<45} ║ +║ 运行环境: {:<45} ║ +║ 服务端口: {:<45} ║ +╠══════════════════════════════════════════════════════════╣ +║ 访问地址 ║ +╠══════════════════════════════════════════════════════════╣ +║ 后端服务: {:<45} ║ +║ API接口: {:<45} ║ +║ Druid监控: {:<45} ║ +╠══════════════════════════════════════════════════════════╣ +║ 状态: 🟢 服务运行中,可以接收请求 ║ +╚══════════════════════════════════════════════════════════╝ + +2025-12-25 18:06:24.040 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - +📌 提示: + - 前端代理地址: http://localhost:3000 + - 后端API地址: http://localhost:8082//api + - 图片上传接口: http://localhost:8082//api/product/upload/image + - 商品管理接口: http://localhost:8082//api/product + +2025-12-25 18:06:32.124 [Thread-10] INFO org.apache.coyote.http11.Http11NioProtocol - Stopping ProtocolHandler ["http-nio-8082"] +2025-12-25 18:06:32.377 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ MTKJ PAY 支付系统正在启动... ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +2025-12-25 18:06:32.623 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - Starting MtkjpayApplication using Java 17.0.12 with PID 25608 (E:\MTKJPAY\mt-startup\target\classes started by 18969 in E:\MTKJPAY) +2025-12-25 18:06:32.623 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - The following 1 profile is active: "dev" +2025-12-25 18:06:33.932 [restartedMain] INFO org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8082"] +2025-12-25 18:06:33.934 [restartedMain] INFO org.apache.catalina.core.StandardService - Starting service [Tomcat] +2025-12-25 18:06:33.934 [restartedMain] INFO org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.16] +2025-12-25 18:06:34.001 [restartedMain] INFO o.a.c.c.ContainerBase.[Tomcat-5].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-12-25 18:06:34.026 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - ═══════════════════════════════════════════════════════════ +2025-12-25 18:06:34.026 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - PayPal配置加载验证: +2025-12-25 18:06:34.027 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Client ID: ✅ 已配置 (AdGYUZpvLuHR30dybOAp...) +2025-12-25 18:06:34.027 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Client Secret: ✅ 已配置 (ENblspyRmwsOU_PWFurl...) +2025-12-25 18:06:34.027 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Mode: sandbox +2025-12-25 18:06:34.027 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Enabled: true +2025-12-25 18:06:34.027 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Base URL: https://api-m.sandbox.paypal.com +2025-12-25 18:06:34.027 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Webhook URL: ✅ https://2646b437.r33.cpolar.top/api/paypal/webhook +2025-12-25 18:06:34.027 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - ═══════════════════════════════════════════════════════════ +2025-12-25 18:06:34.039 [restartedMain] INFO com.mtkj.mtpay.config.MyBatisPlusConfig - 初始化MyBatis-Plus分页插件,数据库类型: MYSQL +2025-12-25 18:06:34.040 [restartedMain] INFO com.mtkj.mtpay.config.MyBatisPlusConfig - MyBatis-Plus分页插件配置完成 +2025-12-25 18:06:34.044 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - 初始化Druid主数据源 +2025-12-25 18:06:34.044 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - 配置属性 - URL: jdbc:mysql://rm-j6c3u06k2afwn8hxw6o.mysql.rds.aliyuncs.com:3306/mtpay?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai, Username: mtkj2025 +2025-12-25 18:06:34.045 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - Druid主数据源配置完成,URL: jdbc:mysql://rm-j6c3u06k2afwn8hxw6o.mysql.rds.aliyuncs.com:3306/mtpay?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai +2025-12-25 18:06:34.731 [restartedMain] INFO com.mtkj.mtpay.config.RestClientConfig - 初始化RestClient,配置JSON消息转换器 +2025-12-25 18:06:34.737 [restartedMain] INFO com.mtkj.mtpay.config.RestClientConfig - RestClient配置完成 +2025-12-25 18:06:34.742 [restartedMain] INFO com.mtkj.mtpay.config.AsyncConfig - PayPal Webhook异步处理线程池初始化完成 +2025-12-25 18:06:34.780 [restartedMain] INFO com.mtkj.mtpay.config.WebConfig - 配置跨域访问,路径: /api/**, 允许所有来源 +2025-12-25 18:06:34.781 [restartedMain] INFO com.mtkj.mtpay.config.WebConfig - 跨域配置完成 +2025-12-25 18:06:34.922 [restartedMain] INFO org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8082"] +2025-12-25 18:06:34.931 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - Started MtkjpayApplication in 2.449 seconds (process running for 4714.619) +2025-12-25 18:06:34.933 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ ✅ MTKJ PAY 支付系统启动成功! ✅ ║ +║ ║ +╠══════════════════════════════════════════════════════════╣ +║ 应用信息 ║ +╠══════════════════════════════════════════════════════════╣ +║ 应用名称: {:<45} ║ +║ 运行环境: {:<45} ║ +║ 服务端口: {:<45} ║ +╠══════════════════════════════════════════════════════════╣ +║ 访问地址 ║ +╠══════════════════════════════════════════════════════════╣ +║ 后端服务: {:<45} ║ +║ API接口: {:<45} ║ +║ Druid监控: {:<45} ║ +╠══════════════════════════════════════════════════════════╣ +║ 状态: 🟢 服务运行中,可以接收请求 ║ +╚══════════════════════════════════════════════════════════╝ + +2025-12-25 18:06:34.934 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - +📌 提示: + - 前端代理地址: http://localhost:3000 + - 后端API地址: http://localhost:8082//api + - 图片上传接口: http://localhost:8082//api/product/upload/image + - 商品管理接口: http://localhost:8082//api/product + +2025-12-25 18:08:11.218 [http-nio-8082-exec-1] INFO o.a.c.c.ContainerBase.[Tomcat-5].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' +2025-12-25 18:08:11.235 [http-nio-8082-exec-1] INFO com.mtkj.mtpay.controller.ProductController - 获取商品详情,商品ID:8 +2025-12-25 18:08:11.235 [http-nio-8082-exec-1] DEBUG com.mtkj.mtpay.service.impl.ProductServiceImpl - 查询商品详情,商品ID: 8 +2025-12-25 18:08:12.977 [http-nio-8082-exec-1] DEBUG com.mtkj.mtpay.mapper.MtProductMapper.selectById - ==> Preparing: SELECT id,name,price,main_image,status,shop_id,create_time,update_time FROM mt_product WHERE id=? +2025-12-25 18:08:12.977 [http-nio-8082-exec-1] DEBUG com.mtkj.mtpay.mapper.MtProductMapper.selectById - ==> Parameters: 8(Long) +2025-12-25 18:08:13.018 [http-nio-8082-exec-1] DEBUG com.mtkj.mtpay.mapper.MtProductMapper.selectById - <== Total: 1 +2025-12-25 18:08:13.031 [http-nio-8082-exec-1] DEBUG c.mtkj.mtpay.mapper.MtProductSkuMapper.selectList - ==> Preparing: SELECT id,product_id,sku,price,currency,stock,sales_attrs,sku_image,weight,size,specification,status,create_time,update_time FROM mt_product_sku WHERE (product_id = ? AND status = ?) +2025-12-25 18:08:13.032 [http-nio-8082-exec-1] DEBUG c.mtkj.mtpay.mapper.MtProductSkuMapper.selectList - ==> Parameters: 8(Long), ACTIVE(String) +2025-12-25 18:08:13.164 [http-nio-8082-exec-1] DEBUG c.mtkj.mtpay.mapper.MtProductSkuMapper.selectList - <== Total: 48 +2025-12-25 18:08:13.164 [http-nio-8082-exec-1] DEBUG com.mtkj.mtpay.service.impl.ProductServiceImpl - 查询到商品SKU数量: 48, 商品ID: 8 +2025-12-25 18:08:13.213 [http-nio-8082-exec-1] INFO com.mtkj.mtpay.service.impl.ProductServiceImpl - 获取商品详情成功,商品ID: 8, 商品名称: 迷你保温杯男女精致学生简约便携可爱少女心ins儿童水杯子304, SKU数量: 48, 主图数量: 5 +2025-12-25 18:08:58.485 [http-nio-8082-exec-2] INFO com.mtkj.mtpay.controller.ProductController - 获取商品详情,商品ID:8 +2025-12-25 18:08:58.485 [http-nio-8082-exec-2] DEBUG com.mtkj.mtpay.service.impl.ProductServiceImpl - 查询商品详情,商品ID: 8 +2025-12-25 18:08:58.485 [http-nio-8082-exec-2] DEBUG com.mtkj.mtpay.mapper.MtProductMapper.selectById - ==> Preparing: SELECT id,name,price,main_image,status,shop_id,create_time,update_time FROM mt_product WHERE id=? +2025-12-25 18:08:58.485 [http-nio-8082-exec-2] DEBUG com.mtkj.mtpay.mapper.MtProductMapper.selectById - ==> Parameters: 8(Long) +2025-12-25 18:08:58.523 [http-nio-8082-exec-2] DEBUG com.mtkj.mtpay.mapper.MtProductMapper.selectById - <== Total: 1 +2025-12-25 18:08:58.524 [http-nio-8082-exec-2] DEBUG c.mtkj.mtpay.mapper.MtProductSkuMapper.selectList - ==> Preparing: SELECT id,product_id,sku,price,currency,stock,sales_attrs,sku_image,weight,size,specification,status,create_time,update_time FROM mt_product_sku WHERE (product_id = ? AND status = ?) +2025-12-25 18:08:58.524 [http-nio-8082-exec-2] DEBUG c.mtkj.mtpay.mapper.MtProductSkuMapper.selectList - ==> Parameters: 8(Long), ACTIVE(String) +2025-12-25 18:08:58.569 [http-nio-8082-exec-2] DEBUG c.mtkj.mtpay.mapper.MtProductSkuMapper.selectList - <== Total: 48 +2025-12-25 18:08:58.569 [http-nio-8082-exec-2] DEBUG com.mtkj.mtpay.service.impl.ProductServiceImpl - 查询到商品SKU数量: 48, 商品ID: 8 +2025-12-25 18:08:58.571 [http-nio-8082-exec-2] INFO com.mtkj.mtpay.service.impl.ProductServiceImpl - 获取商品详情成功,商品ID: 8, 商品名称: 迷你保温杯男女精致学生简约便携可爱少女心ins儿童水杯子304, SKU数量: 48, 主图数量: 5 +2025-12-25 18:10:15.205 [background-preinit] INFO org.hibernate.validator.internal.util.Version - HV000001: Hibernate Validator 8.0.1.Final +2025-12-25 18:10:15.277 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - Starting MtkjpayApplication using Java 17.0.12 with PID 23984 (E:\MTKJPAY\mt-startup\target\classes started by 18969 in E:\MTKJPAY) +2025-12-25 18:10:15.278 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - The following 1 profile is active: "dev" +2025-12-25 18:10:16.987 [restartedMain] INFO org.apache.coyote.http11.Http11NioProtocol - Initializing ProtocolHandler ["http-nio-8082"] +2025-12-25 18:10:16.989 [restartedMain] INFO org.apache.catalina.core.StandardService - Starting service [Tomcat] +2025-12-25 18:10:16.989 [restartedMain] INFO org.apache.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/10.1.16] +2025-12-25 18:10:17.051 [restartedMain] INFO o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext +2025-12-25 18:10:17.130 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - ═══════════════════════════════════════════════════════════ +2025-12-25 18:10:17.130 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - PayPal配置加载验证: +2025-12-25 18:10:17.130 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Client ID: ✅ 已配置 (AdGYUZpvLuHR30dybOAp...) +2025-12-25 18:10:17.131 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Client Secret: ✅ 已配置 (ENblspyRmwsOU_PWFurl...) +2025-12-25 18:10:17.131 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Mode: sandbox +2025-12-25 18:10:17.131 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Enabled: true +2025-12-25 18:10:17.131 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Base URL: https://api-m.sandbox.paypal.com +2025-12-25 18:10:17.131 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - - Webhook URL: ✅ https://2646b437.r33.cpolar.top/api/paypal/webhook +2025-12-25 18:10:17.131 [restartedMain] INFO com.mtkj.mtpay.config.PayPalProperties - ═══════════════════════════════════════════════════════════ +2025-12-25 18:10:17.153 [restartedMain] INFO com.mtkj.mtpay.config.MyBatisPlusConfig - 初始化MyBatis-Plus分页插件,数据库类型: MYSQL +2025-12-25 18:10:17.158 [restartedMain] INFO com.mtkj.mtpay.config.MyBatisPlusConfig - MyBatis-Plus分页插件配置完成 +2025-12-25 18:10:17.165 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - 初始化Druid主数据源 +2025-12-25 18:10:17.166 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - 配置属性 - URL: jdbc:mysql://rm-j6c3u06k2afwn8hxw6o.mysql.rds.aliyuncs.com:3306/mtpay?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai, Username: mtkj2025 +2025-12-25 18:10:17.195 [restartedMain] INFO com.mtkj.mtpay.config.DruidDataSourceConfig - Druid主数据源配置完成,URL: jdbc:mysql://rm-j6c3u06k2afwn8hxw6o.mysql.rds.aliyuncs.com:3306/mtpay?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai +2025-12-25 18:10:18.110 [restartedMain] INFO com.mtkj.mtpay.config.RestClientConfig - 初始化RestClient,配置JSON消息转换器 +2025-12-25 18:10:18.330 [restartedMain] INFO com.mtkj.mtpay.config.RestClientConfig - RestClient配置完成 +2025-12-25 18:10:18.341 [restartedMain] INFO com.mtkj.mtpay.config.AsyncConfig - PayPal Webhook异步处理线程池初始化完成 +2025-12-25 18:10:18.455 [restartedMain] INFO com.mtkj.mtpay.config.WebConfig - 配置跨域访问,路径: /api/**, 允许所有来源 +2025-12-25 18:10:18.459 [restartedMain] INFO com.mtkj.mtpay.config.WebConfig - 跨域配置完成 +2025-12-25 18:10:18.983 [restartedMain] INFO org.apache.coyote.http11.Http11NioProtocol - Starting ProtocolHandler ["http-nio-8082"] +2025-12-25 18:10:19.015 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - Started MtkjpayApplication in 4.636 seconds (process running for 5.885) +2025-12-25 18:10:19.019 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ ✅ MTKJ PAY 支付系统启动成功! ✅ ║ +║ ║ +╠══════════════════════════════════════════════════════════╣ +║ 应用信息 ║ +╠══════════════════════════════════════════════════════════╣ +║ 应用名称: {:<45} ║ +║ 运行环境: {:<45} ║ +║ 服务端口: {:<45} ║ +╠══════════════════════════════════════════════════════════╣ +║ 访问地址 ║ +╠══════════════════════════════════════════════════════════╣ +║ 后端服务: {:<45} ║ +║ API接口: {:<45} ║ +║ Druid监控: {:<45} ║ +╠══════════════════════════════════════════════════════════╣ +║ 状态: 🟢 服务运行中,可以接收请求 ║ +╚══════════════════════════════════════════════════════════╝ + +2025-12-25 18:10:19.020 [restartedMain] INFO com.mtkj.mtkjpay.MtkjpayApplication - +📌 提示: + - 前端代理地址: http://localhost:3000 + - 后端API地址: http://localhost:8082//api + - 图片上传接口: http://localhost:8082//api/product/upload/image + - 商品管理接口: http://localhost:8082//api/product + +2025-12-25 18:10:19.023 [main] ERROR com.mtkj.mtkjpay.MtkjpayApplication - +╔══════════════════════════════════════════════════════════╗ +║ ║ +║ ❌ MTKJ PAY 支付系统启动失败! ❌ ║ +║ ║ +╚══════════════════════════════════════════════════════════╝ + +org.springframework.boot.devtools.restart.SilentExitExceptionHandler$SilentExitException: null + at org.springframework.boot.devtools.restart.SilentExitExceptionHandler.exitCurrentThread(SilentExitExceptionHandler.java:92) + at org.springframework.boot.devtools.restart.Restarter.immediateRestart(Restarter.java:179) + at org.springframework.boot.devtools.restart.Restarter.initialize(Restarter.java:163) + at org.springframework.boot.devtools.restart.Restarter.initialize(Restarter.java:532) + at org.springframework.boot.devtools.restart.RestartApplicationListener.onApplicationStartingEvent(RestartApplicationListener.java:98) + at org.springframework.boot.devtools.restart.RestartApplicationListener.onApplicationEvent(RestartApplicationListener.java:51) + at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:178) + at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:171) + at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:149) + at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:137) + at org.springframework.boot.context.event.EventPublishingRunListener.multicastInitialEvent(EventPublishingRunListener.java:136) + at org.springframework.boot.context.event.EventPublishingRunListener.starting(EventPublishingRunListener.java:75) + at org.springframework.boot.SpringApplicationRunListeners.lambda$starting$0(SpringApplicationRunListeners.java:54) + at java.base/java.lang.Iterable.forEach(Iterable.java:75) + at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118) + at org.springframework.boot.SpringApplicationRunListeners.starting(SpringApplicationRunListeners.java:54) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) + at com.mtkj.mtkjpay.MtkjpayApplication.main(MtkjpayApplication.java:42) +2025-12-25 18:10:24.637 [http-nio-8082-exec-1] INFO o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] - Initializing Spring DispatcherServlet 'dispatcherServlet' +2025-12-25 18:10:24.768 [http-nio-8082-exec-1] INFO com.mtkj.mtpay.controller.CustomerOrderController - 查询订单列表,查询条件:OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10) +2025-12-25 18:10:24.777 [http-nio-8082-exec-1] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 页码: 1, 每页大小: 10 +2025-12-25 18:10:26.921 [http-nio-8082-exec-1] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - ==> Preparing: SELECT COUNT(*) AS total FROM customer_order +2025-12-25 18:10:26.940 [http-nio-8082-exec-1] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - ==> Parameters: +2025-12-25 18:10:26.992 [http-nio-8082-exec-1] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - <== Total: 1 +2025-12-25 18:10:26.998 [http-nio-8082-exec-1] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - ==> Preparing: SELECT id,order_no,product_id,product_name,sku_id,sku_name,quantity,unit_price,total_amount,currency,original_currency,original_amount,payment_currency,payment_amount,exchange_rate,rate_locked_at,status,customer_name,customer_phone,customer_email,shipping_name,shipping_phone,shipping_country,shipping_state,shipping_city,shipping_street,shipping_postcode,shipping_address_line1,shipping_address_line2,shipping_special_fields,payment_order_id,payment_status,remark,create_time,update_time FROM customer_order ORDER BY create_time DESC LIMIT ? +2025-12-25 18:10:26.999 [http-nio-8082-exec-1] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - ==> Parameters: 10(Long) +2025-12-25 18:10:27.048 [http-nio-8082-exec-1] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - <== Total: 10 +2025-12-25 18:10:27.051 [http-nio-8082-exec-1] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询到订单数量: 10/10, 总记录数: 26 +2025-12-25 18:10:27.056 [http-nio-8082-exec-1] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Preparing: SELECT id,paypal_order_id,merchant_order_no,amount,currency,payment_amount,payment_currency,exchange_rate,status,intent,payment_status,capture_id,payer_email,payer_name,payer_id,return_url,cancel_url,order_data,remark,create_time,update_time FROM paypal_payment_order WHERE (merchant_order_no IN (?,?,?,?,?,?,?,?,?,?)) +2025-12-25 18:10:27.058 [http-nio-8082-exec-1] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Parameters: MTN17666482550207027(String), MTN17666480638696136(String), MTN17666450837675956(String), MTN17666443372270278(String), MTN17666434268771357(String), MTN17666429858990044(String), MTN17666400377131247(String), MTN17666398071816233(String), MTN17666396532891074(String), MTN17666396250793738(String) +2025-12-25 18:10:27.102 [http-nio-8082-exec-1] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - <== Total: 8 +2025-12-25 18:10:27.103 [http-nio-8082-exec-1] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 批量查询到PayPal订单数量: 8 +2025-12-25 18:10:27.107 [http-nio-8082-exec-1] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表完成,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 结果数量: 10/10, 总记录数: 26, 耗时: 2330ms +2025-12-25 18:10:35.519 [http-nio-8082-exec-2] INFO com.mtkj.mtpay.controller.CustomerOrderController - 查询订单列表,查询条件:OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=FAILED, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10) +2025-12-25 18:10:35.520 [http-nio-8082-exec-2] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=FAILED, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 页码: 1, 每页大小: 10 +2025-12-25 18:10:35.743 [http-nio-8082-exec-2] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - ==> Preparing: SELECT COUNT(*) AS total FROM customer_order WHERE (payment_status = ?) +2025-12-25 18:10:35.743 [http-nio-8082-exec-2] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - ==> Parameters: FAILED(String) +2025-12-25 18:10:35.783 [http-nio-8082-exec-2] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - <== Total: 1 +2025-12-25 18:10:35.783 [http-nio-8082-exec-2] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询到订单数量: 0/10, 总记录数: 0 +2025-12-25 18:10:35.783 [http-nio-8082-exec-2] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 订单列表为空,耗时: 264ms +2025-12-25 18:10:37.815 [http-nio-8082-exec-3] INFO com.mtkj.mtpay.controller.CustomerOrderController - 查询订单列表,查询条件:OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=UNPAID, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10) +2025-12-25 18:10:37.815 [http-nio-8082-exec-3] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=UNPAID, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 页码: 1, 每页大小: 10 +2025-12-25 18:10:37.829 [http-nio-8082-exec-3] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - ==> Preparing: SELECT COUNT(*) AS total FROM customer_order WHERE (payment_status = ?) +2025-12-25 18:10:37.830 [http-nio-8082-exec-3] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - ==> Parameters: UNPAID(String) +2025-12-25 18:10:37.867 [http-nio-8082-exec-3] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - <== Total: 1 +2025-12-25 18:10:37.867 [http-nio-8082-exec-3] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - ==> Preparing: SELECT id,order_no,product_id,product_name,sku_id,sku_name,quantity,unit_price,total_amount,currency,original_currency,original_amount,payment_currency,payment_amount,exchange_rate,rate_locked_at,status,customer_name,customer_phone,customer_email,shipping_name,shipping_phone,shipping_country,shipping_state,shipping_city,shipping_street,shipping_postcode,shipping_address_line1,shipping_address_line2,shipping_special_fields,payment_order_id,payment_status,remark,create_time,update_time FROM customer_order WHERE (payment_status = ?) ORDER BY create_time DESC LIMIT ? +2025-12-25 18:10:37.867 [http-nio-8082-exec-3] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - ==> Parameters: UNPAID(String), 10(Long) +2025-12-25 18:10:37.914 [http-nio-8082-exec-3] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - <== Total: 10 +2025-12-25 18:10:37.914 [http-nio-8082-exec-3] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询到订单数量: 10/10, 总记录数: 13 +2025-12-25 18:10:37.916 [http-nio-8082-exec-3] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Preparing: SELECT id,paypal_order_id,merchant_order_no,amount,currency,payment_amount,payment_currency,exchange_rate,status,intent,payment_status,capture_id,payer_email,payer_name,payer_id,return_url,cancel_url,order_data,remark,create_time,update_time FROM paypal_payment_order WHERE (merchant_order_no IN (?,?,?,?,?,?,?,?,?,?)) +2025-12-25 18:10:37.917 [http-nio-8082-exec-3] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Parameters: MTN17666398071816233(String), MTN17666396532891074(String), MTN17666339737704680(String), MTN17665646336517427(String), MTN17665643886425883(String), MTN17664835830469402(String), MTN17664835282648453(String), MTN17664806417517040(String), MTN17664806045675429(String), MTN17664805834146146(String) +2025-12-25 18:10:37.956 [http-nio-8082-exec-3] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - <== Total: 0 +2025-12-25 18:10:37.956 [http-nio-8082-exec-3] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 批量查询到PayPal订单数量: 0 +2025-12-25 18:10:37.963 [http-nio-8082-exec-3] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表完成,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=UNPAID, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 结果数量: 10/10, 总记录数: 13, 耗时: 148ms +2025-12-25 18:10:40.590 [http-nio-8082-exec-4] INFO com.mtkj.mtpay.controller.CustomerOrderController - 查询订单列表,查询条件:OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=PAID, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10) +2025-12-25 18:10:40.590 [http-nio-8082-exec-4] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=PAID, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 页码: 1, 每页大小: 10 +2025-12-25 18:10:40.610 [http-nio-8082-exec-4] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - ==> Preparing: SELECT COUNT(*) AS total FROM customer_order WHERE (payment_status = ?) +2025-12-25 18:10:40.611 [http-nio-8082-exec-4] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - ==> Parameters: PAID(String) +2025-12-25 18:10:40.648 [http-nio-8082-exec-4] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - <== Total: 1 +2025-12-25 18:10:40.649 [http-nio-8082-exec-4] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - ==> Preparing: SELECT id,order_no,product_id,product_name,sku_id,sku_name,quantity,unit_price,total_amount,currency,original_currency,original_amount,payment_currency,payment_amount,exchange_rate,rate_locked_at,status,customer_name,customer_phone,customer_email,shipping_name,shipping_phone,shipping_country,shipping_state,shipping_city,shipping_street,shipping_postcode,shipping_address_line1,shipping_address_line2,shipping_special_fields,payment_order_id,payment_status,remark,create_time,update_time FROM customer_order WHERE (payment_status = ?) ORDER BY create_time DESC LIMIT ? +2025-12-25 18:10:40.649 [http-nio-8082-exec-4] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - ==> Parameters: PAID(String), 10(Long) +2025-12-25 18:10:40.690 [http-nio-8082-exec-4] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - <== Total: 10 +2025-12-25 18:10:40.690 [http-nio-8082-exec-4] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询到订单数量: 10/10, 总记录数: 13 +2025-12-25 18:10:40.692 [http-nio-8082-exec-4] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Preparing: SELECT id,paypal_order_id,merchant_order_no,amount,currency,payment_amount,payment_currency,exchange_rate,status,intent,payment_status,capture_id,payer_email,payer_name,payer_id,return_url,cancel_url,order_data,remark,create_time,update_time FROM paypal_payment_order WHERE (merchant_order_no IN (?,?,?,?,?,?,?,?,?,?)) +2025-12-25 18:10:40.693 [http-nio-8082-exec-4] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Parameters: MTN17666482550207027(String), MTN17666480638696136(String), MTN17666450837675956(String), MTN17666443372270278(String), MTN17666434268771357(String), MTN17666429858990044(String), MTN17666400377131247(String), MTN17666396250793738(String), MTN17666342738277657(String), MTN17665651348819746(String) +2025-12-25 18:10:40.736 [http-nio-8082-exec-4] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - <== Total: 9 +2025-12-25 18:10:40.737 [http-nio-8082-exec-4] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 批量查询到PayPal订单数量: 9 +2025-12-25 18:10:40.737 [http-nio-8082-exec-4] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表完成,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=PAID, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 结果数量: 10/10, 总记录数: 13, 耗时: 147ms +2025-12-25 18:10:46.245 [http-nio-8082-exec-5] INFO com.mtkj.mtpay.controller.CustomerOrderController - 查询订单列表,查询条件:OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10) +2025-12-25 18:10:46.245 [http-nio-8082-exec-5] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 页码: 1, 每页大小: 10 +2025-12-25 18:10:46.259 [http-nio-8082-exec-5] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - ==> Preparing: SELECT COUNT(*) AS total FROM customer_order +2025-12-25 18:10:46.259 [http-nio-8082-exec-5] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - ==> Parameters: +2025-12-25 18:10:46.297 [http-nio-8082-exec-5] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - <== Total: 1 +2025-12-25 18:10:46.297 [http-nio-8082-exec-5] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - ==> Preparing: SELECT id,order_no,product_id,product_name,sku_id,sku_name,quantity,unit_price,total_amount,currency,original_currency,original_amount,payment_currency,payment_amount,exchange_rate,rate_locked_at,status,customer_name,customer_phone,customer_email,shipping_name,shipping_phone,shipping_country,shipping_state,shipping_city,shipping_street,shipping_postcode,shipping_address_line1,shipping_address_line2,shipping_special_fields,payment_order_id,payment_status,remark,create_time,update_time FROM customer_order ORDER BY create_time DESC LIMIT ? +2025-12-25 18:10:46.297 [http-nio-8082-exec-5] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - ==> Parameters: 10(Long) +2025-12-25 18:10:46.341 [http-nio-8082-exec-5] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - <== Total: 10 +2025-12-25 18:10:46.341 [http-nio-8082-exec-5] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询到订单数量: 10/10, 总记录数: 26 +2025-12-25 18:10:46.344 [http-nio-8082-exec-5] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Preparing: SELECT id,paypal_order_id,merchant_order_no,amount,currency,payment_amount,payment_currency,exchange_rate,status,intent,payment_status,capture_id,payer_email,payer_name,payer_id,return_url,cancel_url,order_data,remark,create_time,update_time FROM paypal_payment_order WHERE (merchant_order_no IN (?,?,?,?,?,?,?,?,?,?)) +2025-12-25 18:10:46.345 [http-nio-8082-exec-5] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Parameters: MTN17666482550207027(String), MTN17666480638696136(String), MTN17666450837675956(String), MTN17666443372270278(String), MTN17666434268771357(String), MTN17666429858990044(String), MTN17666400377131247(String), MTN17666398071816233(String), MTN17666396532891074(String), MTN17666396250793738(String) +2025-12-25 18:10:46.385 [http-nio-8082-exec-5] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - <== Total: 8 +2025-12-25 18:10:46.386 [http-nio-8082-exec-5] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 批量查询到PayPal订单数量: 8 +2025-12-25 18:10:46.387 [http-nio-8082-exec-5] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表完成,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 结果数量: 10/10, 总记录数: 26, 耗时: 142ms +2025-12-25 18:10:49.420 [http-nio-8082-exec-6] INFO com.mtkj.mtpay.controller.CustomerOrderController - 查询订单列表,查询条件:OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=VOIDED, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10) +2025-12-25 18:10:49.420 [http-nio-8082-exec-6] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=VOIDED, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 页码: 1, 每页大小: 10 +2025-12-25 18:10:49.422 [http-nio-8082-exec-6] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Preparing: SELECT id,paypal_order_id,merchant_order_no,amount,currency,payment_amount,payment_currency,exchange_rate,status,intent,payment_status,capture_id,payer_email,payer_name,payer_id,return_url,cancel_url,order_data,remark,create_time,update_time FROM paypal_payment_order WHERE (status = ?) +2025-12-25 18:10:49.423 [http-nio-8082-exec-6] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Parameters: VOIDED(String) +2025-12-25 18:10:49.466 [http-nio-8082-exec-6] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - <== Total: 0 +2025-12-25 18:10:49.467 [http-nio-8082-exec-6] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - PayPal订单查询结果为空,返回空列表 +2025-12-25 18:10:54.529 [http-nio-8082-exec-7] INFO com.mtkj.mtpay.controller.CustomerOrderController - 查询订单列表,查询条件:OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=CREATED, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10) +2025-12-25 18:10:54.529 [http-nio-8082-exec-7] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=CREATED, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 页码: 1, 每页大小: 10 +2025-12-25 18:10:54.529 [http-nio-8082-exec-7] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Preparing: SELECT id,paypal_order_id,merchant_order_no,amount,currency,payment_amount,payment_currency,exchange_rate,status,intent,payment_status,capture_id,payer_email,payer_name,payer_id,return_url,cancel_url,order_data,remark,create_time,update_time FROM paypal_payment_order WHERE (status = ?) +2025-12-25 18:10:54.530 [http-nio-8082-exec-7] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Parameters: CREATED(String) +2025-12-25 18:10:54.567 [http-nio-8082-exec-7] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - <== Total: 0 +2025-12-25 18:10:54.567 [http-nio-8082-exec-7] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - PayPal订单查询结果为空,返回空列表 +2025-12-25 18:10:56.337 [http-nio-8082-exec-8] INFO com.mtkj.mtpay.controller.CustomerOrderController - 查询订单列表,查询条件:OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=APPROVED, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10) +2025-12-25 18:10:56.337 [http-nio-8082-exec-8] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=APPROVED, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 页码: 1, 每页大小: 10 +2025-12-25 18:10:56.338 [http-nio-8082-exec-8] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Preparing: SELECT id,paypal_order_id,merchant_order_no,amount,currency,payment_amount,payment_currency,exchange_rate,status,intent,payment_status,capture_id,payer_email,payer_name,payer_id,return_url,cancel_url,order_data,remark,create_time,update_time FROM paypal_payment_order WHERE (status = ?) +2025-12-25 18:10:56.340 [http-nio-8082-exec-8] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Parameters: APPROVED(String) +2025-12-25 18:10:56.380 [http-nio-8082-exec-8] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - <== Total: 0 +2025-12-25 18:10:56.382 [http-nio-8082-exec-8] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - PayPal订单查询结果为空,返回空列表 +2025-12-25 18:10:58.522 [http-nio-8082-exec-9] INFO com.mtkj.mtpay.controller.CustomerOrderController - 查询订单列表,查询条件:OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=COMPLETED, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10) +2025-12-25 18:10:58.522 [http-nio-8082-exec-9] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=COMPLETED, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 页码: 1, 每页大小: 10 +2025-12-25 18:10:58.523 [http-nio-8082-exec-9] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Preparing: SELECT id,paypal_order_id,merchant_order_no,amount,currency,payment_amount,payment_currency,exchange_rate,status,intent,payment_status,capture_id,payer_email,payer_name,payer_id,return_url,cancel_url,order_data,remark,create_time,update_time FROM paypal_payment_order WHERE (status = ?) +2025-12-25 18:10:58.523 [http-nio-8082-exec-9] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Parameters: COMPLETED(String) +2025-12-25 18:10:58.561 [http-nio-8082-exec-9] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - <== Total: 9 +2025-12-25 18:10:58.589 [http-nio-8082-exec-9] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - ==> Preparing: SELECT COUNT(*) AS total FROM customer_order WHERE (order_no IN (?, ?, ?, ?, ?, ?, ?, ?, ?)) +2025-12-25 18:10:58.589 [http-nio-8082-exec-9] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - ==> Parameters: MTN17666342738277657(String), MTN17666396250793738(String), MTN17666400377131247(String), MTN17666429858990044(String), MTN17666434268771357(String), MTN17666443372270278(String), MTN17666450837675956(String), MTN17666480638696136(String), MTN17666482550207027(String) +2025-12-25 18:10:58.628 [http-nio-8082-exec-9] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - <== Total: 1 +2025-12-25 18:10:58.628 [http-nio-8082-exec-9] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - ==> Preparing: SELECT id,order_no,product_id,product_name,sku_id,sku_name,quantity,unit_price,total_amount,currency,original_currency,original_amount,payment_currency,payment_amount,exchange_rate,rate_locked_at,status,customer_name,customer_phone,customer_email,shipping_name,shipping_phone,shipping_country,shipping_state,shipping_city,shipping_street,shipping_postcode,shipping_address_line1,shipping_address_line2,shipping_special_fields,payment_order_id,payment_status,remark,create_time,update_time FROM customer_order WHERE (order_no IN (?,?,?,?,?,?,?,?,?)) ORDER BY create_time DESC LIMIT ? +2025-12-25 18:10:58.629 [http-nio-8082-exec-9] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - ==> Parameters: MTN17666342738277657(String), MTN17666396250793738(String), MTN17666400377131247(String), MTN17666429858990044(String), MTN17666434268771357(String), MTN17666443372270278(String), MTN17666450837675956(String), MTN17666480638696136(String), MTN17666482550207027(String), 10(Long) +2025-12-25 18:10:58.667 [http-nio-8082-exec-9] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - <== Total: 9 +2025-12-25 18:10:58.667 [http-nio-8082-exec-9] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询到订单数量: 9/10, 总记录数: 9 +2025-12-25 18:10:58.669 [http-nio-8082-exec-9] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Preparing: SELECT id,paypal_order_id,merchant_order_no,amount,currency,payment_amount,payment_currency,exchange_rate,status,intent,payment_status,capture_id,payer_email,payer_name,payer_id,return_url,cancel_url,order_data,remark,create_time,update_time FROM paypal_payment_order WHERE (merchant_order_no IN (?,?,?,?,?,?,?,?,?)) +2025-12-25 18:10:58.669 [http-nio-8082-exec-9] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Parameters: MTN17666482550207027(String), MTN17666480638696136(String), MTN17666450837675956(String), MTN17666443372270278(String), MTN17666434268771357(String), MTN17666429858990044(String), MTN17666400377131247(String), MTN17666396250793738(String), MTN17666342738277657(String) +2025-12-25 18:10:58.707 [http-nio-8082-exec-9] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - <== Total: 9 +2025-12-25 18:10:58.707 [http-nio-8082-exec-9] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 批量查询到PayPal订单数量: 9 +2025-12-25 18:10:58.708 [http-nio-8082-exec-9] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表完成,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=COMPLETED, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 结果数量: 9/10, 总记录数: 9, 耗时: 186ms +2025-12-25 18:11:02.003 [http-nio-8082-exec-10] INFO com.mtkj.mtpay.controller.CustomerOrderController - 查询订单列表,查询条件:OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10) +2025-12-25 18:11:02.003 [http-nio-8082-exec-10] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 页码: 1, 每页大小: 10 +2025-12-25 18:11:02.019 [http-nio-8082-exec-10] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - ==> Preparing: SELECT COUNT(*) AS total FROM customer_order +2025-12-25 18:11:02.019 [http-nio-8082-exec-10] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - ==> Parameters: +2025-12-25 18:11:02.056 [http-nio-8082-exec-10] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - <== Total: 1 +2025-12-25 18:11:02.057 [http-nio-8082-exec-10] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - ==> Preparing: SELECT id,order_no,product_id,product_name,sku_id,sku_name,quantity,unit_price,total_amount,currency,original_currency,original_amount,payment_currency,payment_amount,exchange_rate,rate_locked_at,status,customer_name,customer_phone,customer_email,shipping_name,shipping_phone,shipping_country,shipping_state,shipping_city,shipping_street,shipping_postcode,shipping_address_line1,shipping_address_line2,shipping_special_fields,payment_order_id,payment_status,remark,create_time,update_time FROM customer_order ORDER BY create_time DESC LIMIT ? +2025-12-25 18:11:02.057 [http-nio-8082-exec-10] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - ==> Parameters: 10(Long) +2025-12-25 18:11:02.097 [http-nio-8082-exec-10] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - <== Total: 10 +2025-12-25 18:11:02.097 [http-nio-8082-exec-10] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询到订单数量: 10/10, 总记录数: 26 +2025-12-25 18:11:02.099 [http-nio-8082-exec-10] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Preparing: SELECT id,paypal_order_id,merchant_order_no,amount,currency,payment_amount,payment_currency,exchange_rate,status,intent,payment_status,capture_id,payer_email,payer_name,payer_id,return_url,cancel_url,order_data,remark,create_time,update_time FROM paypal_payment_order WHERE (merchant_order_no IN (?,?,?,?,?,?,?,?,?,?)) +2025-12-25 18:11:02.099 [http-nio-8082-exec-10] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Parameters: MTN17666482550207027(String), MTN17666480638696136(String), MTN17666450837675956(String), MTN17666443372270278(String), MTN17666434268771357(String), MTN17666429858990044(String), MTN17666400377131247(String), MTN17666398071816233(String), MTN17666396532891074(String), MTN17666396250793738(String) +2025-12-25 18:11:02.138 [http-nio-8082-exec-10] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - <== Total: 8 +2025-12-25 18:11:02.139 [http-nio-8082-exec-10] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 批量查询到PayPal订单数量: 8 +2025-12-25 18:11:02.139 [http-nio-8082-exec-10] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表完成,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 结果数量: 10/10, 总记录数: 26, 耗时: 136ms +2025-12-25 18:11:13.162 [http-nio-8082-exec-1] INFO com.mtkj.mtpay.controller.CustomerOrderController - 查询订单列表,查询条件:OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=null, paypalPaymentStatus=null, customerName=邱斌, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10) +2025-12-25 18:11:13.163 [http-nio-8082-exec-1] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=null, paypalPaymentStatus=null, customerName=邱斌, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 页码: 1, 每页大小: 10 +2025-12-25 18:11:13.205 [http-nio-8082-exec-1] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - ==> Preparing: SELECT COUNT(*) AS total FROM customer_order WHERE (customer_name LIKE ?) +2025-12-25 18:11:13.205 [http-nio-8082-exec-1] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - ==> Parameters: %邱斌%(String) +2025-12-25 18:11:13.243 [http-nio-8082-exec-1] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - <== Total: 1 +2025-12-25 18:11:13.244 [http-nio-8082-exec-1] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - ==> Preparing: SELECT id,order_no,product_id,product_name,sku_id,sku_name,quantity,unit_price,total_amount,currency,original_currency,original_amount,payment_currency,payment_amount,exchange_rate,rate_locked_at,status,customer_name,customer_phone,customer_email,shipping_name,shipping_phone,shipping_country,shipping_state,shipping_city,shipping_street,shipping_postcode,shipping_address_line1,shipping_address_line2,shipping_special_fields,payment_order_id,payment_status,remark,create_time,update_time FROM customer_order WHERE (customer_name LIKE ?) ORDER BY create_time DESC LIMIT ? +2025-12-25 18:11:13.244 [http-nio-8082-exec-1] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - ==> Parameters: %邱斌%(String), 10(Long) +2025-12-25 18:11:13.287 [http-nio-8082-exec-1] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - <== Total: 10 +2025-12-25 18:11:13.287 [http-nio-8082-exec-1] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询到订单数量: 10/10, 总记录数: 22 +2025-12-25 18:11:13.288 [http-nio-8082-exec-1] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Preparing: SELECT id,paypal_order_id,merchant_order_no,amount,currency,payment_amount,payment_currency,exchange_rate,status,intent,payment_status,capture_id,payer_email,payer_name,payer_id,return_url,cancel_url,order_data,remark,create_time,update_time FROM paypal_payment_order WHERE (merchant_order_no IN (?,?,?,?,?,?,?,?,?,?)) +2025-12-25 18:11:13.288 [http-nio-8082-exec-1] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Parameters: MTN17666482550207027(String), MTN17666480638696136(String), MTN17666450837675956(String), MTN17666443372270278(String), MTN17666434268771357(String), MTN17666429858990044(String), MTN17666398071816233(String), MTN17666396532891074(String), MTN17666396250793738(String), MTN17666342738277657(String) +2025-12-25 18:11:13.341 [http-nio-8082-exec-1] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - <== Total: 8 +2025-12-25 18:11:13.341 [http-nio-8082-exec-1] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 批量查询到PayPal订单数量: 8 +2025-12-25 18:11:13.342 [http-nio-8082-exec-1] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表完成,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=null, paypalPaymentStatus=null, customerName=邱斌, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 结果数量: 10/10, 总记录数: 22, 耗时: 179ms +2025-12-25 18:11:17.504 [http-nio-8082-exec-2] INFO com.mtkj.mtpay.controller.CustomerOrderController - 查询订单列表,查询条件:OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10) +2025-12-25 18:11:17.504 [http-nio-8082-exec-2] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 页码: 1, 每页大小: 10 +2025-12-25 18:11:17.518 [http-nio-8082-exec-2] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - ==> Preparing: SELECT COUNT(*) AS total FROM customer_order +2025-12-25 18:11:17.518 [http-nio-8082-exec-2] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - ==> Parameters: +2025-12-25 18:11:17.554 [http-nio-8082-exec-2] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - <== Total: 1 +2025-12-25 18:11:17.554 [http-nio-8082-exec-2] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - ==> Preparing: SELECT id,order_no,product_id,product_name,sku_id,sku_name,quantity,unit_price,total_amount,currency,original_currency,original_amount,payment_currency,payment_amount,exchange_rate,rate_locked_at,status,customer_name,customer_phone,customer_email,shipping_name,shipping_phone,shipping_country,shipping_state,shipping_city,shipping_street,shipping_postcode,shipping_address_line1,shipping_address_line2,shipping_special_fields,payment_order_id,payment_status,remark,create_time,update_time FROM customer_order ORDER BY create_time DESC LIMIT ? +2025-12-25 18:11:17.556 [http-nio-8082-exec-2] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - ==> Parameters: 10(Long) +2025-12-25 18:11:17.593 [http-nio-8082-exec-2] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - <== Total: 10 +2025-12-25 18:11:17.593 [http-nio-8082-exec-2] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询到订单数量: 10/10, 总记录数: 26 +2025-12-25 18:11:17.594 [http-nio-8082-exec-2] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Preparing: SELECT id,paypal_order_id,merchant_order_no,amount,currency,payment_amount,payment_currency,exchange_rate,status,intent,payment_status,capture_id,payer_email,payer_name,payer_id,return_url,cancel_url,order_data,remark,create_time,update_time FROM paypal_payment_order WHERE (merchant_order_no IN (?,?,?,?,?,?,?,?,?,?)) +2025-12-25 18:11:17.595 [http-nio-8082-exec-2] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Parameters: MTN17666482550207027(String), MTN17666480638696136(String), MTN17666450837675956(String), MTN17666443372270278(String), MTN17666434268771357(String), MTN17666429858990044(String), MTN17666400377131247(String), MTN17666398071816233(String), MTN17666396532891074(String), MTN17666396250793738(String) +2025-12-25 18:11:17.634 [http-nio-8082-exec-2] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - <== Total: 8 +2025-12-25 18:11:17.634 [http-nio-8082-exec-2] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 批量查询到PayPal订单数量: 8 +2025-12-25 18:11:17.634 [http-nio-8082-exec-2] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表完成,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 结果数量: 10/10, 总记录数: 26, 耗时: 130ms +2025-12-25 18:11:33.874 [http-nio-8082-exec-3] INFO com.mtkj.mtpay.controller.CustomerOrderController - 查询订单列表,查询条件:OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10) +2025-12-25 18:11:33.874 [http-nio-8082-exec-3] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 页码: 1, 每页大小: 10 +2025-12-25 18:11:33.890 [http-nio-8082-exec-3] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - ==> Preparing: SELECT COUNT(*) AS total FROM customer_order +2025-12-25 18:11:33.891 [http-nio-8082-exec-3] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - ==> Parameters: +2025-12-25 18:11:33.927 [http-nio-8082-exec-3] DEBUG c.m.m.m.CustomerOrderMapper.selectList_mpCount - <== Total: 1 +2025-12-25 18:11:33.927 [http-nio-8082-exec-3] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - ==> Preparing: SELECT id,order_no,product_id,product_name,sku_id,sku_name,quantity,unit_price,total_amount,currency,original_currency,original_amount,payment_currency,payment_amount,exchange_rate,rate_locked_at,status,customer_name,customer_phone,customer_email,shipping_name,shipping_phone,shipping_country,shipping_state,shipping_city,shipping_street,shipping_postcode,shipping_address_line1,shipping_address_line2,shipping_special_fields,payment_order_id,payment_status,remark,create_time,update_time FROM customer_order ORDER BY create_time DESC LIMIT ? +2025-12-25 18:11:33.927 [http-nio-8082-exec-3] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - ==> Parameters: 10(Long) +2025-12-25 18:11:33.967 [http-nio-8082-exec-3] DEBUG c.mtkj.mtpay.mapper.CustomerOrderMapper.selectList - <== Total: 10 +2025-12-25 18:11:33.968 [http-nio-8082-exec-3] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询到订单数量: 10/10, 总记录数: 26 +2025-12-25 18:11:33.968 [http-nio-8082-exec-3] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Preparing: SELECT id,paypal_order_id,merchant_order_no,amount,currency,payment_amount,payment_currency,exchange_rate,status,intent,payment_status,capture_id,payer_email,payer_name,payer_id,return_url,cancel_url,order_data,remark,create_time,update_time FROM paypal_payment_order WHERE (merchant_order_no IN (?,?,?,?,?,?,?,?,?,?)) +2025-12-25 18:11:33.969 [http-nio-8082-exec-3] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - ==> Parameters: MTN17666482550207027(String), MTN17666480638696136(String), MTN17666450837675956(String), MTN17666443372270278(String), MTN17666434268771357(String), MTN17666429858990044(String), MTN17666400377131247(String), MTN17666398071816233(String), MTN17666396532891074(String), MTN17666396250793738(String) +2025-12-25 18:11:34.006 [http-nio-8082-exec-3] DEBUG c.m.m.mapper.PayPalPaymentOrderMapper.selectList - <== Total: 8 +2025-12-25 18:11:34.006 [http-nio-8082-exec-3] DEBUG c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 批量查询到PayPal订单数量: 8 +2025-12-25 18:11:34.007 [http-nio-8082-exec-3] INFO c.mtkj.mtpay.service.impl.CustomerOrderServiceImpl - 查询订单列表完成,查询条件: OrderQueryRequestDTO(orderNo=null, paypalOrderId=null, merchantOrderNo=null, status=null, paymentStatus=null, paypalStatus=null, paypalPaymentStatus=null, customerName=null, customerPhone=null, customerEmail=null, productName=null, payerEmail=null, payerName=null, startTime=null, endTime=null, pageNum=1, pageSize=10), 结果数量: 10/10, 总记录数: 26, 耗时: 133ms +2025-12-25 18:11:36.538 [http-nio-8082-exec-4] INFO com.mtkj.mtpay.controller.ProductController - 获取商品列表 +2025-12-25 18:11:36.538 [http-nio-8082-exec-4] DEBUG com.mtkj.mtpay.service.impl.ProductServiceImpl - 查询商品列表 +2025-12-25 18:11:36.539 [http-nio-8082-exec-4] DEBUG com.mtkj.mtpay.mapper.MtProductMapper.selectList - ==> Preparing: SELECT id,name,price,main_image,status,shop_id,create_time,update_time FROM mt_product WHERE (status <> ?) ORDER BY create_time DESC +2025-12-25 18:11:36.539 [http-nio-8082-exec-4] DEBUG com.mtkj.mtpay.mapper.MtProductMapper.selectList - ==> Parameters: DELETED(String) +2025-12-25 18:11:36.580 [http-nio-8082-exec-4] DEBUG com.mtkj.mtpay.mapper.MtProductMapper.selectList - <== Total: 2 +2025-12-25 18:11:36.580 [http-nio-8082-exec-4] DEBUG com.mtkj.mtpay.service.impl.ProductServiceImpl - 查询到商品数量: 2 +2025-12-25 18:11:36.581 [http-nio-8082-exec-4] DEBUG c.mtkj.mtpay.mapper.MtProductSkuMapper.selectList - ==> Preparing: SELECT id,product_id,sku,price,currency,stock,sales_attrs,sku_image,weight,size,specification,status,create_time,update_time FROM mt_product_sku WHERE (product_id IN (?,?)) +2025-12-25 18:11:36.582 [http-nio-8082-exec-4] DEBUG c.mtkj.mtpay.mapper.MtProductSkuMapper.selectList - ==> Parameters: 9(Long), 8(Long) +2025-12-25 18:11:36.625 [http-nio-8082-exec-4] DEBUG c.mtkj.mtpay.mapper.MtProductSkuMapper.selectList - <== Total: 49 +2025-12-25 18:11:36.626 [http-nio-8082-exec-4] DEBUG com.mtkj.mtpay.service.impl.ProductServiceImpl - 批量查询到SKU数量: 49, 涉及商品数: 2 +2025-12-25 18:11:36.628 [http-nio-8082-exec-4] DEBUG c.mtkj.mtpay.mapper.MtProductLinkMapper.selectList - ==> Preparing: SELECT id,product_id,link_code,full_url,expire_days,expire_time,status,create_time,update_time FROM mt_product_link WHERE (product_id IN (?,?) AND status = ? AND expire_time > ?) ORDER BY create_time DESC +2025-12-25 18:11:36.628 [http-nio-8082-exec-4] DEBUG c.mtkj.mtpay.mapper.MtProductLinkMapper.selectList - ==> Parameters: 9(Long), 8(Long), ACTIVE(String), 2025-12-25T18:11:36.627273900(LocalDateTime) +2025-12-25 18:11:36.672 [http-nio-8082-exec-4] DEBUG c.mtkj.mtpay.mapper.MtProductLinkMapper.selectList - <== Total: 2 +2025-12-25 18:11:36.674 [http-nio-8082-exec-4] DEBUG com.mtkj.mtpay.service.impl.ProductServiceImpl - 批量查询到商品链接数量: 2, 涉及商品数: 2 +2025-12-25 18:11:36.702 [http-nio-8082-exec-4] INFO com.mtkj.mtpay.service.impl.ProductServiceImpl - 获取商品列表成功,商品数量: 2, 耗时: 163ms diff --git a/mt-pay/src/main/java/com/mtkj/mtpay/controller/CustomerOrderController.java b/mt-pay/src/main/java/com/mtkj/mtpay/controller/CustomerOrderController.java index 359fd2c..5e8f29c 100644 --- a/mt-pay/src/main/java/com/mtkj/mtpay/controller/CustomerOrderController.java +++ b/mt-pay/src/main/java/com/mtkj/mtpay/controller/CustomerOrderController.java @@ -3,8 +3,10 @@ package com.mtkj.mtpay.controller; import com.mtkj.mtpay.common.Result; import com.mtkj.mtpay.dto.request.CalculateCurrencyConversionRequestDTO; import com.mtkj.mtpay.dto.request.CreateCustomerOrderRequestDTO; +import com.mtkj.mtpay.dto.request.OrderQueryRequestDTO; import com.mtkj.mtpay.dto.response.CurrencyConversionDTO; import com.mtkj.mtpay.dto.response.CustomerOrderResponseDTO; +import com.mtkj.mtpay.dto.response.PageResult; import com.mtkj.mtpay.service.CustomerOrderService; import com.mtkj.mtpay.service.ExchangeRateService; import jakarta.validation.Valid; @@ -134,6 +136,18 @@ public class CustomerOrderController { return Result.success(order); } + /** + * 查询订单列表(支持多条件查询和分页) + */ + @PostMapping("/query") + public Result> queryOrders( + @RequestBody OrderQueryRequestDTO query) { + log.info("查询订单列表,查询条件:{}", query); + PageResult pageResult = + customerOrderService.queryOrders(query); + return Result.success(pageResult); + } + /** * 构建汇率说明文本 */ diff --git a/mt-pay/src/main/java/com/mtkj/mtpay/dto/request/OrderQueryRequestDTO.java b/mt-pay/src/main/java/com/mtkj/mtpay/dto/request/OrderQueryRequestDTO.java new file mode 100644 index 0000000..52bc3d4 --- /dev/null +++ b/mt-pay/src/main/java/com/mtkj/mtpay/dto/request/OrderQueryRequestDTO.java @@ -0,0 +1,96 @@ +package com.mtkj.mtpay.dto.request; + +import lombok.Data; + +/** + * 订单列表查询请求DTO + */ +@Data +public class OrderQueryRequestDTO { + + /** + * 订单号(精确查询) + */ + private String orderNo; + + /** + * PayPal订单ID(精确查询) + */ + private String paypalOrderId; + + /** + * 商户订单号(精确查询,等同于orderNo) + */ + private String merchantOrderNo; + + /** + * 订单状态(PENDING-待支付,PAID-已支付,SHIPPED-已发货,COMPLETED-已完成,CANCELLED-已取消) + */ + private String status; + + /** + * 支付状态(UNPAID-未支付,PAID-已支付,FAILED-支付失败) + */ + private String paymentStatus; + + /** + * PayPal订单状态(CREATED-已创建,APPROVED-已批准,COMPLETED-已完成,VOIDED-已取消等) + */ + private String paypalStatus; + + /** + * PayPal支付状态(COMPLETED-已完成,DENIED-被拒绝,PENDING-待处理等) + */ + private String paypalPaymentStatus; + + /** + * 客户姓名(模糊查询) + */ + private String customerName; + + /** + * 客户电话(模糊查询) + */ + private String customerPhone; + + /** + * 客户邮箱(模糊查询) + */ + private String customerEmail; + + /** + * 商品名称(模糊查询) + */ + private String productName; + + /** + * 支付者邮箱(PayPal,模糊查询) + */ + private String payerEmail; + + /** + * 支付者姓名(PayPal,模糊查询) + */ + private String payerName; + + /** + * 开始时间(订单创建时间) + */ + private String startTime; + + /** + * 结束时间(订单创建时间) + */ + private String endTime; + + /** + * 当前页码(从1开始,默认1) + */ + private Integer pageNum = 1; + + /** + * 每页大小(默认10) + */ + private Integer pageSize = 10; +} + diff --git a/mt-pay/src/main/java/com/mtkj/mtpay/dto/response/OrderListResponseDTO.java b/mt-pay/src/main/java/com/mtkj/mtpay/dto/response/OrderListResponseDTO.java new file mode 100644 index 0000000..52d6ce1 --- /dev/null +++ b/mt-pay/src/main/java/com/mtkj/mtpay/dto/response/OrderListResponseDTO.java @@ -0,0 +1,155 @@ +package com.mtkj.mtpay.dto.response; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 订单列表响应DTO(包含客户订单和PayPal订单信息) + */ +@Data +public class OrderListResponseDTO implements Serializable { + + /** + * 客户订单ID + */ + private Long id; + + /** + * 订单号 + */ + private String orderNo; + + /** + * 商品ID + */ + private Long productId; + + /** + * 商品名称 + */ + private String productName; + + /** + * SKU名称 + */ + private String skuName; + + /** + * 购买数量 + */ + private Integer quantity; + + /** + * 订单总金额(原始货币) + */ + private BigDecimal totalAmount; + + /** + * 原始货币代码 + */ + private String originalCurrency; + + /** + * 原始订单金额 + */ + private BigDecimal originalAmount; + + /** + * 支付货币代码 + */ + private String paymentCurrency; + + /** + * 支付金额 + */ + private BigDecimal paymentAmount; + + /** + * 订单状态(PENDING-待支付,PAID-已支付,SHIPPED-已发货,COMPLETED-已完成,CANCELLED-已取消) + */ + private String status; + + /** + * 支付状态(UNPAID-未支付,PAID-已支付,FAILED-支付失败) + */ + private String paymentStatus; + + /** + * 客户姓名 + */ + private String customerName; + + /** + * 客户电话 + */ + private String customerPhone; + + /** + * 客户邮箱 + */ + private String customerEmail; + + /** + * 收货国家 + */ + private String shippingCountry; + + /** + * 收货城市 + */ + private String shippingCity; + + /** + * PayPal订单ID + */ + private String paypalOrderId; + + /** + * PayPal订单状态(CREATED-已创建,APPROVED-已批准,COMPLETED-已完成,VOIDED-已取消等) + */ + private String paypalStatus; + + /** + * PayPal支付状态(COMPLETED-已完成,DENIED-被拒绝,PENDING-待处理等) + */ + private String paypalPaymentStatus; + + /** + * 支付者邮箱(PayPal) + */ + private String payerEmail; + + /** + * 支付者姓名(PayPal) + */ + private String payerName; + + /** + * 支付捕获ID(PayPal) + */ + private String captureId; + + /** + * 订单创建时间 + */ + private LocalDateTime createTime; + + /** + * 订单更新时间 + */ + private LocalDateTime updateTime; + + /** + * PayPal订单创建时间 + */ + private LocalDateTime paypalCreateTime; + + /** + * PayPal订单更新时间 + */ + private LocalDateTime paypalUpdateTime; +} + diff --git a/mt-pay/src/main/java/com/mtkj/mtpay/service/CustomerOrderService.java b/mt-pay/src/main/java/com/mtkj/mtpay/service/CustomerOrderService.java index f2ecc49..0a8b633 100644 --- a/mt-pay/src/main/java/com/mtkj/mtpay/service/CustomerOrderService.java +++ b/mt-pay/src/main/java/com/mtkj/mtpay/service/CustomerOrderService.java @@ -1,7 +1,9 @@ package com.mtkj.mtpay.service; import com.mtkj.mtpay.dto.request.CreateCustomerOrderRequestDTO; +import com.mtkj.mtpay.dto.request.OrderQueryRequestDTO; import com.mtkj.mtpay.dto.response.CustomerOrderResponseDTO; +import com.mtkj.mtpay.dto.response.PageResult; /** * 客户订单服务接口 @@ -58,5 +60,12 @@ public interface CustomerOrderService { String paymentCurrency, java.math.BigDecimal paymentAmount, java.math.BigDecimal exchangeRate); + + /** + * 查询订单列表(支持多条件查询和分页) + * @param query 查询条件(包含分页参数) + * @return 分页结果 + */ + PageResult queryOrders(OrderQueryRequestDTO query); } diff --git a/mt-pay/src/main/java/com/mtkj/mtpay/service/impl/CustomerOrderServiceImpl.java b/mt-pay/src/main/java/com/mtkj/mtpay/service/impl/CustomerOrderServiceImpl.java index 57e210e..3640a28 100644 --- a/mt-pay/src/main/java/com/mtkj/mtpay/service/impl/CustomerOrderServiceImpl.java +++ b/mt-pay/src/main/java/com/mtkj/mtpay/service/impl/CustomerOrderServiceImpl.java @@ -3,8 +3,14 @@ package com.mtkj.mtpay.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.mtkj.mtpay.common.ResultCode; import com.mtkj.mtpay.common.enums.ProductStatus; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mtkj.mtpay.dto.request.CreateCustomerOrderRequestDTO; +import com.mtkj.mtpay.dto.request.OrderQueryRequestDTO; import com.mtkj.mtpay.dto.response.CustomerOrderResponseDTO; +import com.mtkj.mtpay.dto.response.OrderListResponseDTO; +import com.mtkj.mtpay.dto.response.PageResult; +import com.mtkj.mtpay.entity.PayPalPaymentOrder; import com.mtkj.mtpay.entity.CustomerOrder; import com.mtkj.mtpay.entity.MtProduct; import com.mtkj.mtpay.entity.MtProductSku; @@ -12,6 +18,7 @@ import com.mtkj.mtpay.exception.BusinessException; import com.mtkj.mtpay.mapper.CustomerOrderMapper; import com.mtkj.mtpay.mapper.MtProductMapper; import com.mtkj.mtpay.mapper.MtProductSkuMapper; +import com.mtkj.mtpay.mapper.PayPalPaymentOrderMapper; import com.mtkj.mtpay.service.CustomerOrderService; import com.mtkj.mtpay.util.BaiduTranslatorUtils; import com.mtkj.mtpay.util.OrderIdGenerator; @@ -38,6 +45,7 @@ public class CustomerOrderServiceImpl implements CustomerOrderService { private final CustomerOrderMapper customerOrderMapper; private final MtProductMapper productMapper; private final MtProductSkuMapper productSkuMapper; + private final PayPalPaymentOrderMapper payPalPaymentOrderMapper; private final BaiduTranslatorUtils baiduTranslatorUtils; @Override @@ -319,5 +327,203 @@ public class CustomerOrderServiceImpl implements CustomerOrderService { log.info("订单状态更新成功,订单号: {}", orderNo); } + @Override + public PageResult queryOrders(OrderQueryRequestDTO query) { + long startTime = System.currentTimeMillis(); + + // 处理分页参数 + int pageNum = query.getPageNum() != null && query.getPageNum() > 0 ? query.getPageNum() : 1; + int pageSize = query.getPageSize() != null && query.getPageSize() > 0 ? query.getPageSize() : 10; + + // 限制每页最大数量 + if (pageSize > 100) { + pageSize = 100; + log.warn("每页大小超过限制,已调整为100,原始值: {}", query.getPageSize()); + } + + log.info("查询订单列表,查询条件: {}, 页码: {}, 每页大小: {}", query, pageNum, pageSize); + + // 1. 构建客户订单查询条件 + LambdaQueryWrapper orderWrapper = new LambdaQueryWrapper<>(); + + // 订单号查询 + if (query.getOrderNo() != null && !query.getOrderNo().trim().isEmpty()) { + orderWrapper.eq(CustomerOrder::getOrderNo, query.getOrderNo().trim()); + } + + // 订单状态查询 + if (query.getStatus() != null && !query.getStatus().trim().isEmpty()) { + orderWrapper.eq(CustomerOrder::getStatus, query.getStatus().trim()); + } + + // 支付状态查询 + if (query.getPaymentStatus() != null && !query.getPaymentStatus().trim().isEmpty()) { + orderWrapper.eq(CustomerOrder::getPaymentStatus, query.getPaymentStatus().trim()); + } + + // 客户姓名模糊查询 + if (query.getCustomerName() != null && !query.getCustomerName().trim().isEmpty()) { + orderWrapper.like(CustomerOrder::getCustomerName, query.getCustomerName().trim()); + } + + // 客户电话模糊查询 + if (query.getCustomerPhone() != null && !query.getCustomerPhone().trim().isEmpty()) { + orderWrapper.like(CustomerOrder::getCustomerPhone, query.getCustomerPhone().trim()); + } + + // 客户邮箱模糊查询 + if (query.getCustomerEmail() != null && !query.getCustomerEmail().trim().isEmpty()) { + orderWrapper.like(CustomerOrder::getCustomerEmail, query.getCustomerEmail().trim()); + } + + // 商品名称模糊查询 + if (query.getProductName() != null && !query.getProductName().trim().isEmpty()) { + orderWrapper.like(CustomerOrder::getProductName, query.getProductName().trim()); + } + + // 时间范围查询 + if (query.getStartTime() != null && !query.getStartTime().trim().isEmpty()) { + try { + java.time.LocalDateTime start = java.time.LocalDateTime.parse(query.getStartTime().trim()); + orderWrapper.ge(CustomerOrder::getCreateTime, start); + } catch (Exception e) { + log.warn("开始时间格式错误: {}", query.getStartTime(), e); + } + } + if (query.getEndTime() != null && !query.getEndTime().trim().isEmpty()) { + try { + java.time.LocalDateTime end = java.time.LocalDateTime.parse(query.getEndTime().trim()); + orderWrapper.le(CustomerOrder::getCreateTime, end); + } catch (Exception e) { + log.warn("结束时间格式错误: {}", query.getEndTime(), e); + } + } + + // 如果指定了PayPal相关查询条件,需要先查询PayPal订单,获取对应的商户订单号 + java.util.List merchantOrderNos = null; + if (query.getPaypalOrderId() != null && !query.getPaypalOrderId().trim().isEmpty() || + query.getMerchantOrderNo() != null && !query.getMerchantOrderNo().trim().isEmpty() || + query.getPaypalStatus() != null && !query.getPaypalStatus().trim().isEmpty() || + query.getPaypalPaymentStatus() != null && !query.getPaypalPaymentStatus().trim().isEmpty() || + query.getPayerEmail() != null && !query.getPayerEmail().trim().isEmpty() || + query.getPayerName() != null && !query.getPayerName().trim().isEmpty()) { + + // 构建PayPal订单查询条件 + LambdaQueryWrapper paypalWrapper = new LambdaQueryWrapper<>(); + + if (query.getPaypalOrderId() != null && !query.getPaypalOrderId().trim().isEmpty()) { + paypalWrapper.eq(PayPalPaymentOrder::getPaypalOrderId, query.getPaypalOrderId().trim()); + } + + if (query.getMerchantOrderNo() != null && !query.getMerchantOrderNo().trim().isEmpty()) { + paypalWrapper.eq(PayPalPaymentOrder::getMerchantOrderNo, query.getMerchantOrderNo().trim()); + } + + if (query.getPaypalStatus() != null && !query.getPaypalStatus().trim().isEmpty()) { + paypalWrapper.eq(PayPalPaymentOrder::getStatus, query.getPaypalStatus().trim()); + } + + if (query.getPaypalPaymentStatus() != null && !query.getPaypalPaymentStatus().trim().isEmpty()) { + paypalWrapper.eq(PayPalPaymentOrder::getPaymentStatus, query.getPaypalPaymentStatus().trim()); + } + + if (query.getPayerEmail() != null && !query.getPayerEmail().trim().isEmpty()) { + paypalWrapper.like(PayPalPaymentOrder::getPayerEmail, query.getPayerEmail().trim()); + } + + if (query.getPayerName() != null && !query.getPayerName().trim().isEmpty()) { + paypalWrapper.like(PayPalPaymentOrder::getPayerName, query.getPayerName().trim()); + } + + // 查询PayPal订单,获取商户订单号列表 + java.util.List paypalOrders = payPalPaymentOrderMapper.selectList(paypalWrapper); + merchantOrderNos = paypalOrders.stream() + .map(PayPalPaymentOrder::getMerchantOrderNo) + .filter(java.util.Objects::nonNull) + .distinct() + .collect(java.util.stream.Collectors.toList()); + + if (merchantOrderNos.isEmpty()) { + // 如果PayPal订单查询结果为空,直接返回空分页结果 + log.debug("PayPal订单查询结果为空,返回空列表"); + return new PageResult<>((long) pageNum, (long) pageSize, 0L, new java.util.ArrayList<>()); + } + + // 将商户订单号作为客户订单的查询条件 + orderWrapper.in(CustomerOrder::getOrderNo, merchantOrderNos); + } + + // 按创建时间降序排序 + orderWrapper.orderByDesc(CustomerOrder::getCreateTime); + + // 使用MyBatis-Plus分页查询 + Page page = new Page<>(pageNum, pageSize); + IPage orderPage = customerOrderMapper.selectPage(page, orderWrapper); + + java.util.List orders = orderPage.getRecords(); + log.debug("查询到订单数量: {}/{}, 总记录数: {}", orders.size(), pageSize, orderPage.getTotal()); + + if (orders.isEmpty()) { + log.info("订单列表为空,耗时: {}ms", System.currentTimeMillis() - startTime); + return new PageResult<>((long) pageNum, (long) pageSize, orderPage.getTotal(), new java.util.ArrayList<>()); + } + + // 2. 批量查询PayPal订单信息(优化N+1问题) + java.util.List orderNos = orders.stream() + .map(CustomerOrder::getOrderNo) + .filter(java.util.Objects::nonNull) + .collect(java.util.stream.Collectors.toList()); + + java.util.Map paypalOrderMap = new java.util.HashMap<>(); + if (!orderNos.isEmpty()) { + LambdaQueryWrapper paypalWrapper = new LambdaQueryWrapper<>(); + paypalWrapper.in(PayPalPaymentOrder::getMerchantOrderNo, orderNos); + java.util.List paypalOrders = payPalPaymentOrderMapper.selectList(paypalWrapper); + + paypalOrderMap = paypalOrders.stream() + .collect(java.util.stream.Collectors.toMap( + PayPalPaymentOrder::getMerchantOrderNo, + order -> order, + (existing, replacement) -> existing // 如果有重复,保留第一个 + )); + + log.debug("批量查询到PayPal订单数量: {}", paypalOrderMap.size()); + } + + // 3. 组装响应数据 + java.util.List result = new java.util.ArrayList<>(); + for (CustomerOrder order : orders) { + OrderListResponseDTO dto = new OrderListResponseDTO(); + BeanUtils.copyProperties(order, dto); + + // 设置PayPal订单信息 + PayPalPaymentOrder paypalOrder = paypalOrderMap.get(order.getOrderNo()); + if (paypalOrder != null) { + dto.setPaypalOrderId(paypalOrder.getPaypalOrderId()); + dto.setPaypalStatus(paypalOrder.getStatus()); + dto.setPaypalPaymentStatus(paypalOrder.getPaymentStatus()); + dto.setPayerEmail(paypalOrder.getPayerEmail()); + dto.setPayerName(paypalOrder.getPayerName()); + dto.setCaptureId(paypalOrder.getCaptureId()); + dto.setPaypalCreateTime(paypalOrder.getCreateTime()); + dto.setPaypalUpdateTime(paypalOrder.getUpdateTime()); + } + + result.add(dto); + } + + long endTime = System.currentTimeMillis(); + log.info("查询订单列表完成,查询条件: {}, 结果数量: {}/{}, 总记录数: {}, 耗时: {}ms", + query, result.size(), pageSize, orderPage.getTotal(), endTime - startTime); + + // 构建分页结果 + return new PageResult<>( + orderPage.getCurrent(), + orderPage.getSize(), + orderPage.getTotal(), + result + ); + } + }