添加 PLAN.md 文档,详细分析现有第三方配置实现并规划将物流查询服务商替换为聚水潭的实施步骤。文档内容包括现有路由、控制器、配置存储分析,以及分步实施计划(数据库配置添加、后端表单构建修改、业务逻辑实现)。
3.1 KiB
3.1 KiB
2. 物流查询接口配置功能分析与实施计划
本计划旨在分析 /admin/setting/third_party 路由的实现原理,并指导如何将物流查询接口配置替换为 聚水潭 (Jushuitan)。
2.1 现有实现分析
-
路由与控制器:
- 前端路由
/admin/setting/third_party对应后端接口config/edit_new_build/third。 - 控制器方法:
app/controller/admin/v1/system/config/SystemConfig.php中的getNewFormBuild。 - 核心逻辑:调用
app/services/system/config/SystemConfigServices.php中的thirdPartyFormBuild方法构建表单。
- 前端路由
-
配置存储:
- 所有配置项存储在数据库表
eb_system_config中。 logistics_type字段控制当前使用的物流查询服务商。- 配置项的参数也存储在该表中。
- 所有配置项存储在数据库表
-
业务逻辑消费:
- 物流查询逻辑位于
app/services/other/ExpressServices.php的query方法。
- 物流查询逻辑位于
2.2 实施步骤
步骤 1:数据库配置添加
需要在 eb_system_config 表中添加聚水潭相关的配置项。
参考文档:聚水潭开放平台 - 第三方授权
- 操作:插入新记录。
jushuitan_app_key: 应用 App Keyjushuitan_app_secret: 应用 App Secretjushuitan_access_token: 访问令牌 (Access Token)
- 更新:修改
logistics_type的parameter字段,增加选项3=聚水潭。
步骤 2:后端表单构建修改
修改 app/services/system/config/SystemConfigServices.php 文件。
-
引入新字段: 在
thirdPartyFormBuild方法中,将新字段名加入getConfigAllField调用列表。$data = $this->getConfigAllField([ ..., 'jushuitan_app_key', 'jushuitan_app_secret', 'jushuitan_access_token' ]); -
更新表单结构: 在
logistics_type的radio组件中增加新的选项控制逻辑。->option('物流查询', [ Build::radio('logistics_type', ...)->control(3, [ Build::input('jushuitan_app_key', ...)->info('聚水潭 App Key'), Build::input('jushuitan_app_secret', ...)->info('聚水潭 App Secret'), Build::input('jushuitan_access_token', ...)->info('聚水潭 Access Token (或通过授权接口自动获取)') ])->options(...) ])
步骤 3:业务逻辑实现
修改 app/services/other/ExpressServices.php 文件。
-
扩展查询逻辑: 在
query方法的switch语句中增加case 3分支。case 3: // 聚水潭 // 调用聚水潭查询接口 $result = $this->queryJushuitan($expressNum); // 格式化返回数据 break; -
实现具体查询方法: 添加
queryJushuitan私有方法。- 签名生成:根据聚水潭文档规则生成
sign。 - 接口调用:发送 HTTP POST 请求到聚水潭 API (如
https://openapi.jushuitan.com/open/logistics/trace/search,具体以文档为准)。 - 数据解析:解析返回的 JSON 数据,提取物流轨迹信息。
- 签名生成:根据聚水潭文档规则生成