HuanMengAdmin/admin-client/接口迁移确认-后端回复.md
2025-11-08 15:00:24 +08:00

11 KiB
Raw Permalink Blame History

接口迁移确认 - 后端回复

📋 概述

根据前端提供的待确认接口列表后端需要为以下4个接口创建新版本基于 tableName + dataBase

  1. 同步字段接口 - 需要创建新版本
  2. 获取表配置表单接口 - 需要创建新版本
  3. 保存表配置表单接口 - 需要创建新版本
  4. 表级别数据变更接口 - 需要创建新版本

1. 同步字段接口

当前接口(旧版本)

  • 路径POST /api/v1/admin/LowCodeTableInfo/synchronization/{tableId}
  • 方法POST
  • 参数tableId (路径参数Guid格式)
  • 状态 仍然可用,但建议迁移到新版本

新版本接口

  • 路径POST /api/v1/admin/LowCodeTableInfo/synchronizationByTable
  • 方法POST
  • 参数请求体JSON
    {
      tableName: string;    // 表名(必填)
      dataBase: string;     // 数据库标识(必填)
    }
    
  • 响应true (成功) 或抛出异常
  • 功能:从数据库同步字段信息到内存缓存(清除缓存并重新加载)

请求示例

{
  "tableName": "T_AccountPasswordLogins",
  "dataBase": "LiveForum"
}

响应示例

true

说明

  • 新版本接口会清除缓存并重新从数据库加载表结构
  • 不再依赖数据库表 LowCodeTable 的记录
  • 直接使用 tableName + dataBase 匹配表

2. 获取表配置表单接口

当前接口(旧版本)

  • 路径GET /api/v1/admin/LowCodeTable/findForm/{id}
  • 方法GET
  • 参数id (路径参数Guid格式可选)
  • 状态 仍然可用,但建议迁移到新版本

新版本接口

  • 路径POST /api/v1/admin/LowCodeTable/findFormByTable
  • 方法POST(使用 POST 以便传递复杂参数)
  • 参数请求体JSON
    {
      tableName: string;    // 表名(必填)
      dataBase: string;     // 数据库标识(必填)
    }
    
  • 响应:字典对象
    {
      id: string;           // 表的临时ID从内存生成不固定
      form: {              // 表配置信息
        tableName: string;
        dataBase: string;
        displayName: string;
        entityName: string;
        remark: string;
        modelPath: string;
        servicePath: string;
        controllerPath: string;
        clientIndexPath: string;
        clientInfoPath: string;
        clientServicePath: string;
        isCover: boolean;
      };
      menu: string;        // 菜单路径(如 "views/apps/T_AccountPasswordLogins/Index.vue"
      router: string;      // 路由路径(如 "/apps/t_accountpasswordlogins"
    }
    

请求示例

{
  "tableName": "T_AccountPasswordLogins",
  "dataBase": "LiveForum"
}

响应示例

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "form": {
    "tableName": "T_AccountPasswordLogins",
    "dataBase": "LiveForum",
    "displayName": "账号密码登录表",
    "entityName": "TAccountPasswordLogins",
    "remark": "账号密码登录表",
    "modelPath": "D:\\CodeManage\\HuanMengAdmin\\HuanMengAdmin\\admin-server\\MiaoYu.Repository.LiveForum.Admin\\Entities\\Apps\\TAccountPasswordLogins",
    "servicePath": "D:\\CodeManage\\HuanMengAdmin\\HuanMengAdmin\\admin-server\\MiaoYu.Api.Admin\\ApplicationServices\\Apps\\LiveForum\\TAccountPasswordLogins",
    "controllerPath": "D:\\CodeManage\\HuanMengAdmin\\HuanMengAdmin\\admin-server\\MiaoYu.Api.Admin\\Controllers\\Apps\\LiveForum\\TAccountPasswordLogins",
    "clientIndexPath": "D:\\CodeManage\\HuanMengAdmin\\HuanMengAdmin\\admin-server\\admin-client\\src\\views\\apps\\liveforum\\T_AccountPasswordLogins",
    "clientInfoPath": "D:\\CodeManage\\HuanMengAdmin\\HuanMengAdmin\\admin-server\\admin-client\\src\\views\\apps\\liveforum\\T_AccountPasswordLogins",
    "clientServicePath": "D:\\CodeManage\\HuanMengAdmin\\HuanMengAdmin\\admin-server\\admin-client\\src\\services\\apps\\liveforum\\T_AccountPasswordLogins",
    "isCover": false
  },
  "menu": "views/apps/T_AccountPasswordLogins/Index.vue",
  "router": "/apps/t_accountpasswordlogins"
}

说明

  • 新版本接口从内存缓存获取表信息,不依赖数据库表记录
  • 路径信息会根据数据源配置自动填充
  • id 字段是临时生成的,每次查询可能不同

3. 保存表配置表单接口

当前接口(旧版本)

  • 路径POST /api/v1/admin/LowCodeTable/{id ? "update" : "create"}
  • 方法POST
  • 参数id (用于判断是更新还是创建), formData (表单数据)
  • 状态 仍然可用,但建议迁移到新版本

新版本接口

  • 路径POST /api/v1/admin/LowCodeTable/saveFormByTable
  • 方法POST
  • 参数请求体JSON
    {
      tableName: string;        // 表名(必填)
      dataBase: string;         // 数据库标识(必填)
      displayName?: string;     // 显示名称
      entityName?: string;      // 实体名称
      remark?: string;          // 备注
      modelPath?: string;       // 实体保存路径
      servicePath?: string;     // 服务保存路径
      controllerPath?: string;  // 控制器保存路径
      clientIndexPath?: string; // 前端视图保存路径
      clientInfoPath?: string;  // 前端信息弹窗保存路径
      clientServicePath?: string; // 前端服务保存路径
      isCover?: boolean;        // 是否覆盖生成
    }
    
  • 响应true (成功) 或抛出异常
  • 功能保存表配置到配置文件JSON文件不依赖数据库表

请求示例

{
  "tableName": "T_AccountPasswordLogins",
  "dataBase": "LiveForum",
  "displayName": "账号密码登录表",
  "entityName": "TAccountPasswordLogins",
  "remark": "账号密码登录表",
  "modelPath": "D:\\CodeManage\\HuanMengAdmin\\HuanMengAdmin\\admin-server\\MiaoYu.Repository.LiveForum.Admin\\Entities\\Apps\\TAccountPasswordLogins",
  "isCover": false
}

响应示例

true

说明

  • 新版本接口直接保存到配置文件,不依赖数据库表 LowCodeTable
  • 使用 tableName + dataBase 作为唯一标识
  • 如果表不存在,会抛出异常
  • 保存后会清除缓存,下次查询会重新加载最新配置

4. 表级别数据变更接口

当前接口(旧版本)

  • 路径POST /api/v1/admin/LowCodeTable/change
  • 方法POST
  • 参数list (表数据数组,包含 id 字段)
  • 状态 仍然可用,但建议迁移到新版本

新版本接口

  • 路径POST /api/v1/admin/LowCodeTable/changeByTable
  • 方法POST
  • 参数请求体JSON
    {
      tables: Array<{
        tableName: string;     // 表名(必填)
        dataBase: string;       // 数据库标识(必填)
        displayName?: string;   // 显示名称可选null 表示清空)
        entityName?: string;    // 实体名称可选null 表示清空)
        remark?: string;        // 备注可选null 表示清空)
      }>;
    }
    
  • 响应true (成功) 或抛出异常
  • 功能批量更新表级别的配置DisplayName, EntityName, Remark保存到配置文件

请求示例

{
  "tables": [
    {
      "tableName": "T_AccountPasswordLogins",
      "dataBase": "LiveForum",
      "displayName": "账号密码登录表",
      "entityName": "TAccountPasswordLogins",
      "remark": "账号密码登录表"
    },
    {
      "tableName": "T_Users",
      "dataBase": "LiveForum",
      "displayName": "用户表",
      "remark": null
    }
  ]
}

响应示例

true

说明

  • 新版本接口支持批量更新多个表的配置
  • 只更新传递的字段,未传递的字段保持原值
  • 字符串字段:null 表示清空,有值表示更新
  • 保存到配置文件,不依赖数据库表
  • 保存后会清除缓存

📝 迁移建议

迁移优先级

  1. 高优先级

    • findFormByTable - 获取表配置表单(前端经常使用)
    • saveFormByTable - 保存表配置表单(前端经常使用)
  2. 中优先级

    • changeByTable - 表级别数据变更(批量更新场景)
  3. 低优先级

    • synchronizationByTable - 同步字段(较少使用)

迁移步骤

  1. 前端先迁移高优先级接口

    • 测试 findFormByTablesaveFormByTable
    • 确认功能正常后,再迁移其他接口
  2. 逐步迁移

    • 不要一次性迁移所有接口
    • 每个接口迁移后都要充分测试
  3. 保留旧接口

    • 旧接口会标记为 [Obsolete],但不会立即删除
    • 给前端足够的迁移时间

⚠️ 注意事项

  1. 数据一致性

    • 新接口使用配置文件存储,旧接口使用数据库表存储
    • 迁移期间,两种存储方式可能不同步
    • 建议迁移完成后,统一使用配置文件
  2. ID 字段

    • 新接口不再依赖数据库表的 id 字段
    • findFormByTable 返回的 id 是临时生成的,不固定
    • 前端不应该依赖这个 id 字段
  3. 错误处理

    • 所有新接口在参数验证失败或表不存在时会抛出 ArgumentException
    • 前端需要捕获异常并显示错误信息

📅 实施计划

阶段一:创建新接口( 已完成)

  • 创建 synchronizationByTable 接口
  • 创建 findFormByTable 接口
  • 创建 saveFormByTable 接口
  • 创建 changeByTable 接口

阶段二:标记旧接口为废弃( 已完成)

  • 在所有旧接口上添加 [Obsolete] 特性
  • 提供迁移说明

阶段三:前端迁移(进行中)

  • 前端逐步迁移到新接口
  • 测试验证功能正常

阶段四:清理(未来)

  • 确认所有前端都已迁移
  • 删除旧接口(可选)

实施状态

所有新接口已创建完成,可以开始前端迁移!

已创建的新接口

  1. POST /api/v1/admin/LowCodeTableInfo/synchronizationByTable - 同步字段
  2. POST /api/v1/admin/LowCodeTable/findFormByTable - 获取表配置表单
  3. POST /api/v1/admin/LowCodeTable/saveFormByTable - 保存表配置表单
  4. POST /api/v1/admin/LowCodeTable/changeByTable - 表级别数据变更

已标记为废弃的旧接口

  1. POST /api/v1/admin/LowCodeTableInfo/synchronization/{tableId} - 已标记 [Obsolete]
  2. GET /api/v1/admin/LowCodeTable/findForm/{id} - 已标记 [Obsolete]
  3. POST /api/v1/admin/LowCodeTable/createupdate - 已标记 [Obsolete]
  4. POST /api/v1/admin/LowCodeTable/change - 已标记 [Obsolete]

📞 联系方式

如有问题,请联系后端开发团队。


📅 文档日期

创建日期2024年当前日期