181917-完全移除Transfer模块外部应用ID字段.md 4.5 KB

完全移除Transfer模块外部应用ID字段

任务概述

按照用户要求,完全移除Transfer模块中的外部应用ID(out_id)字段,因为它已经被开放接口ID(out_id2)替代,不做向后兼容。

完成时间

2025-06-18 19:17

主要工作

1. 数据迁移

  • 将现有的out_id数据迁移到out_id2字段
  • 执行SQL:UPDATE kku_transfer_apps SET out_id2 = out_id WHERE out_id != 0 AND out_id2 = 0;
  • 从数据库表中删除out_id字段:ALTER TABLE kku_transfer_apps DROP COLUMN out_id;

2. 模型层修改

TransferApp.php

  • 移除@property int $out_id注释
  • $fillable数组中移除out_id
  • $casts数组中移除out_id
  • 更新注释:out_id2改为"开放接口ID"

TransferOrder.php

  • 更新注释:out_id改为"开放接口ID"(订单表保留此字段,但含义变更)

3. DTO层修改

TransferAppDto.php

  • 从构造函数中移除out_id参数
  • fromModel方法中移除out_id映射
  • toArray方法中移除out_id字段

4. 后台管理界面修改

TransferAppHelper.php

  • 从Grid列表中移除"外部应用ID"列
  • 从Show页面中移除"外部应用ID"字段
  • 从Form表单中移除"外部应用ID"输入框
  • 更新字段说明:
    • out_id2: "开放接口ID,用于API对接"
    • out_id3: "第三方平台ID,用于平台集成"

5. 业务逻辑修改

TransferLogic.php

  • 创建订单时使用$app->out_id2 ?? 0替代$app->out_id
  • 查询订单时使用$app->out_id2 ?? 0替代$app->out_id

BusinessIdValidator.php

  • 验证业务ID时使用$app->out_id2 ?? 0替代$app->out_id

6. 文档更新

DATABASE.md

  • 移除out_id字段的表结构定义
  • 更新字段说明,移除外部应用ID相关描述
  • 更新索引说明:idx_out_id改为idx_out_id2

optimization.sql

  • 更新索引创建语句:idx_transfer_apps_out_id2

验证结果

数据库验证

-- 验证数据迁移成功
SELECT id, keyname, out_id2, out_id3 FROM kku_transfer_apps;

结果:

  • test_app: out_id2=0, out_id3=0
  • urs: out_id2=1, out_id3=0

后台界面验证

  • ✅ 应用列表页面正确显示"开放接口ID"和"三方平台ID"列
  • ✅ 外部应用ID字段完全移除
  • ✅ 编辑页面"外部应用配置"标签页只显示两个字段:
    • 开放接口ID(用于API对接)
    • 三方平台ID(用于平台集成)
  • ✅ 创建、编辑、查看功能正常工作

功能验证

技术要点

字段含义变更

  • 移除前

    • out_id: 外部应用ID(主要)
    • out_id2: 开放接口ID(次要)
    • out_id3: 三方平台ID(可选)
  • 移除后

    • out_id2: 开放接口ID(主要,用于API对接)
    • out_id3: 三方平台ID(用于平台集成)

数据兼容性

  • 现有数据已迁移到out_id2字段
  • 订单表的out_id字段保留,但现在存储的是开放接口ID值
  • 业务逻辑统一使用out_id2作为开放接口ID

代码变更模式

// 修改前
'out_id' => $app->out_id,

// 修改后  
'out_id' => $app->out_id2 ?? 0,

影响范围

  • ✅ 数据库结构:移除字段,数据已迁移
  • ✅ 模型定义:更新属性和类型转换
  • ✅ DTO对象:移除相关字段
  • ✅ 后台界面:完全移除外部应用ID
  • ✅ 业务逻辑:统一使用开放接口ID
  • ✅ 文档说明:更新字段定义

文件变更清单

  • 修改:app/Module/Transfer/Models/TransferApp.php
  • 修改:app/Module/Transfer/Models/TransferOrder.php
  • 修改:app/Module/Transfer/Dtos/TransferAppDto.php
  • 修改:app/Module/Transfer/AdminControllers/Helper/TransferAppHelper.php
  • 修改:app/Module/Transfer/Logics/TransferLogic.php
  • 修改:app/Module/Transfer/Services/TransferService.php
  • 修改:app/Module/Transfer/Validators/BusinessIdValidator.php
  • 修改:app/Module/Transfer/Docs/DATABASE.md
  • 修改:app/Module/Transfer/Database/optimization.sql

后续建议

  1. 监控系统运行,确保业务逻辑正常
  2. 如有其他模块引用外部应用ID,需要同步更新
  3. 考虑添加数据验证,确保开放接口ID的唯一性
  4. 可以考虑为开放接口ID添加更严格的业务规则

完成状态

✅ 外部应用ID字段已完全移除,系统正常运行,后台管理功能完整