乐于分享
好东西不私藏

聚合支付系统的"流水线工厂":一个模板方法模式的神级操作!

聚合支付系统的"流水线工厂":一个模板方法模式的神级操作!

1 从奶茶店说起

想象一下,你开了一家连锁奶茶店🧋

  • 北京店要做珍珠奶茶
  • 上海店要做水果茶
  • 深圳店要做柠檬茶

问题来了: 每开一家新店,都要重新培训员工从头学起吗?

聪明的老板会这样做:

  1. 制定一个标准配方模板📝
  2. 每种奶茶都遵循: 准备原料 → 调制 → 加冰 → 封杯→ 出餐
  3. 不同奶茶只是原料不同,流程完全一样!

这就是模板方法模式的精髓! 🎯

而我们今天要看的支付系统,就用了一招"奶茶店秘籍"!

2 什么是模板方法模式?

2.1 通俗解释

模板方法模式就像做菜菜谱👨‍🍳

菜谱(父类)规定了固定步骤:

  1. 准备食材
  2. 热锅倒油
  3. 下锅翻炒
  4. 调味出锅

不同厨师(子类)可以:

  • 用不同的食材(西红柿vs土豆)
  • 但不能改变做菜顺序!

核心思想: 流程固定,细节可变

3 支付系统的"奶茶店"架构

3.1 业务背景

我们有一个聚合支付系统,需要对接6个支付渠道:

  • 盛付通
  • 海科融通
  • 拉卡拉
  • 易生支付
  • 乐刷
  • 嘉联支付

每个渠道都要实现相同的业务功能:

  •  商户进件(入驻)
  •  商户信息修改
  •  审核状态查询
  •  微信/支付宝认证
  •  APPID绑定

问题来了: 6个渠道 × 5个功能 = 30套代码? 😱

NO! 我们用模板方法模式,一套代码搞定! 🎉

4 核心架构:三层"奶茶店"模式

4.1 📊 架构图

┌─────────────────────────────────────────────┐│           🏪 业务应用层(前台点餐)              ││    商户提交申请、运营人员查询状态              │└──────────────────┬──────────────────────────┘                   │ 点单                   ▼┌─────────────────────────────────────────────┐│           🎭 渠道策略层(服务员)                ││   盛付通服务员 │ 海科融通服务员 │ 拉卡拉服务员       ││   职责: 接待客户、识别渠道需求                 │└──────────────────┬──────────────────────────┘                   │ 转交后厨                   ▼┌─────────────────────────────────────────────┐│           👨‍🍳 模板方法层(标准菜谱)            ││         AbstractHandleProvider               ││   7个标准流程:进件、修改、查询、认证...        ││   678行代码,定义所有业务骨架                  │└──────────────────┬──────────────────────────┘                   │ 准备食材                   ▼┌─────────────────────────────────────────────┐│           🔄 数据适配层(食材转换)              ││   convertRequest() - 50+字段转换             ││   内部数据 ↔ 支付渠道SDK格式                 │└──────────────────┬──────────────────────────┘                   │ 呼叫供应商                   ▼┌─────────────────────────────────────────────┐│           🏭 外部服务层(食材供应商)            ││   DTPayService - 聚合支付中台               ││   盛付通SDK │ 海科融通SDK │ 拉卡拉SDK               │└─────────────────────────────────────────────┘

4.2 各层职责(用奶茶店比喻)

层级

奶茶店角色

技术职责

代码量

业务应用层

前台点餐员

接收HTTP请求、返回响应

约500行

渠道策略层

服务员

识别客户要哪个渠道

约800行(6个类)

模板方法层

标准菜谱

定义业务流程骨架

678行

数据适配层

食材准备员

数据格式转换

约350行

外部服务层

食材供应商

调用支付渠道API

外部依赖

5 📖 七大"标准菜谱"(模板方法)

📋 菜谱清单

我们的"后厨大师傅"(AbstractHandleProvider)掌握了7道标准菜谱

序号
菜谱名称
方法名
业务场景
步骤数
1
商户进件

createStore()

新商户入驻
8步
2
商户信息修改

updateStore()

修改商户资料
8步
3
审核状态查询

getStoreProcess()

查询进件进度
11步
4
认证状态查询

getAuthProcess()

微信/支付宝认证
8步
5
APPID绑定

bindAppIdProcess()

绑定小程序
6步
6
微信认证

wechatAuth()

微信实名认证
8步
7
支付宝认证

alipayAuth()

支付宝实名认证
8步

6 时序图:商户进件的"八步烹饪法"

🎯 八步烹饪法详解

步骤
奶茶店比喻
技术实现
是否可变

1️⃣ 记录日志

接单记账

log.info("进件开始")

 固定

2️⃣ 准备食材

按配方准备原料

convertRequest()

转换50+字段

可定制

3️⃣下锅烹饪

调用SDK创建商户

dtPayService.create()

 固定

4️⃣ 记录结果

记录烹饪完成

log.info("进件结束")

 固定

5️⃣ 装盘出餐

组装响应对象

创建PayStoreResponseVo

 固定

6️⃣ 质量检查

检查商户状态

判断NORMAL/ABNORMAL

 固定

7️⃣ 通知取餐

发送MQ消息

mqSendService.send()

 固定

8️⃣ 后续处理

业务系统更新

异步更新数据库、通知用户

 固定

关键发现: 8步中只有第2步(准备食材)可以定制,其他7步完全固定!

这就是模板方法的威力:流程不变,食材可变! 🎉

7 🔄 时序图:商户审核状态查询

🎯 查询逻辑亮点

一个接口,三个渠道状态:

  • 微信认证:  已通过(商户号wx001)
  • 支付宝认证:  审核中(预计1-2个工作日)
  • 银联认证:  已驳回(原因:资料不完整,请重新提交)

设计巧妙之处:

  • 使用Stream API过滤三个渠道状态
  • 每个渠道独立转换,互不影响
  • 使用Optional避免空指针异常

8 💡 为什么要用模板方法模式?

8.1 痛点场景:没有模板方法的痛苦

假设我们不用模板方法模式,每个渠道都自己写:

盛付通渠道:  - 进件: 200行代码  - 修改: 180行代码  - 查询: 250行代码  - 认证: 200行代码  - 绑定: 150行代码  小计: 980行海科融通渠道: (重复写一遍)  小计: 980行易生渠道: (再重复一遍)  小计: 980行... (6个渠道)总计: 980 × 6 = 5880行代码! 😱

而且:

  •  修改一个bug要改6个地方
  •  新增一个功能要写6遍
  •  代码重复率高达90%

8.2 爽点场景:用了模板方法的快乐

AbstractHandleProvider(模板方法层):  - 进件模板: 120行  - 修改模板: 100行  - 查询模板: 150行  - 认证模板: 130行  - 绑定模板: 80行  - 数据转换: 350行  - 辅助方法: 200行  小计: 1130行6个渠道策略类:  - 每个只需实现support()方法: 5行  - 小计: 5 × 6 = 30行总计: 1130 + 30 = 1160行代码! 🎉

代码量减少80%! 📉

而且:

  •  修改一个bug只改一处,6个渠道同时生效
  •  新增一个功能只写一次,所有渠道自动拥有
  • ✅ 代码重复率降到10%以下

9 🚀 扩展性:新增渠道只需3步

9.1 传统方式(痛苦模式)

新增一个渠道:

  1. 复制一个渠道的代码
  2. 修改所有硬编码的渠道标识
  3. 修改工厂配置
  4. 修改路由逻辑
  5. 测试所有功能
  6. 耗时: 3天😫

9.2 模板方法方式(快乐模式)

新增一个渠道:

第1步: 创建新策略类

@Componentpublic class NewChannelProvider extends AbstractHandleProvider {    @Override    public boolean support(String channelCode) {        return "NEW".equalsIgnoreCase(channelCode);    }}

第2步: 添加渠道编码常量

String NEW = "NEW";

第3步: 重启应用

耗时: 0.5天 🎉

工厂自动发现新策略,无需任何配置!

10 📊 业务架构全景图

┌──────────────────────────────────────────────────┐                  🏪 业务应用层                       BossController / UserController / 定时任务          功能: 商户进件商户更新状态查询认证绑定        └────────────────────┬─────────────────────────────┘                      HTTP请求                     ┌──────────────────────────────────────────────────┐                  🎭 渠道策略层                         SFTHandleProvider  HKRTHandleProvider              LKLHandleProvider LSHandleProvider              YSHandleProvider JLHandleProvider            职责: 渠道路由判断特殊逻辑重写                 └────────────────────┬─────────────────────────────┘                      调用模板方法                     ┌──────────────────────────────────────────────────┐                👨‍🍳 模板方法层(核心)                          AbstractHandleProvider                     7个模板方法: 进件/修改/查询/认证/绑定                12个适配器方法: 数据转换(50+字段)                   678行核心代码,定义所有业务流程                   └────────────────────┬─────────────────────────────┘                      SDK调用                     ┌──────────────────────────────────────────────────┐                  🏭 外部服务层                         DTPayService - 聚合支付中台SDK                    MqSendService - 消息队列服务                     └──────────────────────────────────────────────────┘

11 🎯 总结:模板方法模式的五大优势

1️⃣ 代码复用率高达90%

  • 6个渠道共享同一个convertRequest方法
  • 50+字段转换逻辑只写一次
  • 异常处理、日志记录、MQ发送全部复用

2️⃣ 扩展性极强

  • 新增渠道只需3步,0.5天搞定
  • 无需修改现有代码
  • 符合开闭原则

3️⃣ 流程标准化

  • 所有渠道遵循相同的处理流程
  • 便于新员工快速理解
  • 避免遗漏关键步骤

4️⃣ 可维护性强

  • 修改转换规则只需改一处
  • Bug修复影响范围可控
  • 代码量减少80%

5️⃣ 业务价值巨大

  • 提升开发效率: 新增渠道从3天→0.5天
  • 降低维护成本: 代码量减少60%
  • 提高系统稳定性: 统一的异常处理机制

12 🎊 结语

模板方法模式,就像奶茶店的标准配方模板:

  • 📝 流程固定: 所有奶茶都遵循相同的步骤
  • 🎨细节可变: 每种奶茶的原料可以不同
  • 🚀易于扩展: 新增奶茶口味,只需添加新配方

我们的支付系统,就是靠这套"奶茶店秘籍":

  •  6个渠道,统一流程
  •  50+字段转换,代码复用
  •  新增渠道,3步搞定

设计模式不是炫技,而是解决实际问题的利器! 💪


13📚 延伸思考

如果你的业务系统也有以下场景,可以考虑模板方法模式:

  1.  多渠道接入(支付、短信、物流等)
  2. 多类型处理(订单、用户、商品等)
  3.  流程固定但细节可变的场景
  4.  需要高度复用代码的场景

记住一句话:流程固定,细节可变,就用模板方法!🎯


点赞❤️ 收藏 转发🔄 让更多开发者看到!

关注我,获取更多设计模式实战解析! 🚀

聚合支付系统里,究竟藏了多少种设计模式

01 观察者模式驱动:支付播报中心的事件监听与推送架构

02 从聚合支付的复式记账看策略模式:一个接口两种记账方式

03 聚合支付财务统计的"接力赛":责任链模式实战解析

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-22 21:23:01 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/638659.html
  2. 运行时间 : 0.194996s [ 吞吐率:5.13req/s ] 内存消耗:4,731.48kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=744d8213e47c71d1ced6ae933ac0d878
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000644s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000732s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.004380s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.015650s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000810s ]
  6. SELECT * FROM `set` [ RunTime:0.000378s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000621s ]
  8. SELECT * FROM `article` WHERE `id` = 638659 LIMIT 1 [ RunTime:0.011335s ]
  9. UPDATE `article` SET `lasttime` = 1784726581 WHERE `id` = 638659 [ RunTime:0.019821s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.018816s ]
  11. SELECT * FROM `article` WHERE `id` < 638659 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000597s ]
  12. SELECT * FROM `article` WHERE `id` > 638659 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.008700s ]
  13. SELECT * FROM `article` WHERE `id` < 638659 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.006630s ]
  14. SELECT * FROM `article` WHERE `id` < 638659 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.019525s ]
  15. SELECT * FROM `article` WHERE `id` < 638659 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003578s ]
0.196690s