internal.md 4.42 KB

内部 API(xlyEntry

xlyEntry 服务承载 SPA 的运行时 API。它是三层中最大的一层:控制器和框架的元数据驱动运行时编译到同一个 WAR,大多数调用会落到少数几个可以读写任意模块的通用端点上。

这个 API 不是给外部调用方使用的稳定契约。端点形状会随框架变化而变化。外部集成应该使用外部 API。本页面面向维护人员和 SPA 扩展作者。

请求生命周期和代码级 walkthrough 见维护人员运行时章节。本页只列 HTTP 入口。

通用 CRUD 接口面:/business/*

Endpoint Method 用途
/business/getModelBysId/{moduleId} GET 返回某个模块的表单布局,也就是五键组合(formDatagdsformconstgdsjurisdictionbillnosettingreport)。
/business/getBusinessDataByFormcustomId/{formId} POST 返回某个表单的业务数据行,带分页。设置 sGroupList 时会分支到 getBusinessDataByGroup
/business/getBusinessDataByIndex POST 首条 / 末条 / 下一条 / 上一条记录导航。
/business/addBusinessData POST 单行新增。
/business/addUpdateDelBusinessData POST 在一个事务调用里组合新增 + 修改 + 删除。前端通过 sTable 直接指定目标表。
/business/getSelectDataBysControlId/{sId} POST 按控件 sId 为单个控件加载下拉选项。
/business/getSelectLimit/{sId} POST 下拉加载调用的分页变体。

这些端点在切片 1getModelBysId + 网格加载 + 保存)和切片 3(基于视图的读取变体)中有更详细说明。处理类位于 xlyEntry/src/main/java/com/xly/web/businessweb/

元数据管理端点

配置侧动作(创建模块、定义表单、声明虚拟表)在 xlyEntry/src/main/java/com/xly/web/systemweb/ 下有一套并行接口面:

Endpoint root Controller 用途
/gdsmodule/* GdsmoduleController 模块树 CRUD,包括 getModuleTreeProaddGdsmoduleupdateGdsmodule
/gdsconfigform/* GdsconfigformController 表单主表和表单明细元数据 CRUD。
/gdsconfigtb/* GdsconfigtbController 虚拟表主表 / 明细元数据 CRUD。

专用运行时端点

Endpoint root Controller 用途
/configform/* BusinessConfigformController 用户 / 用户组级显示定制。
/treegrid/* BusinessTreeGridController 树表端点(当前分支实现的是存储过程支撑路径)。
/procedureCall/* GenericProcedureCallController 按名称 + 参数通用调用存储过程;见通用存储过程分发
/panel/* ConfigformPanelController gdsconfigformpanel 中的面板布局持久化。
/checkFlow/* CheckFlowController Activiti 工作流接口面(审批 / 驳回 / 查看),只在运行流程引擎的部署中有意义。

报表与打印

打印接口面位于 xlyEntry/src/main/java/com/xly/web/report/

  • PrintReportController — 当前 jxls / iText 打印路径。
  • PrintReportControllerOld — 为旧模板保留的历史打印路径。

前端的“打印” / “导出”按钮会调用这些控制器,控制器从 sysreport 加载模板,执行匹配的视图查询,并把二进制文件流回前端。流程见切片 3

认证

所有参与业务数据的控制器方法都标注 @Authorization,并通过 @CurrentUser 接收解析后的 UserInfo。session 到 UserInfo 的映射由框架自己处理(cookie + Redis 支撑的 session);见多租户概念页

如果某个请求未认证却进入了控制器,正常情况下会被 @Authorization 拦下;如果没有被拦下(例如某个方法未加注解),这个方法也会绕过 RequestAddParamUtil 中的通用租户注入,因此就是多租户 bug。

这个 API 不是什么

  • 不是稳定接口。 端点形状会随框架变化。
  • 不是给外部调用方认证的接口。 这里没有 API key 流程;cookie/session 不是集成方需要的东西。
  • 不是自助式公开文档。 这个接口面太大、太通用了,不适合发布成 OpenAPI 文档。外部集成方应该使用经过收敛的外部 API