内部 API(xlyEntry)
xlyEntry 服务承载 SPA 的运行时 API。它是三层中最大的一层:控制器和框架的元数据驱动运行时编译到同一个 WAR,大多数调用会落到少数几个可以读写任意模块的通用端点上。
这个 API 不是给外部调用方使用的稳定契约。端点形状会随框架变化而变化。外部集成应该使用外部 API。本页面面向维护人员和 SPA 扩展作者。
请求生命周期和代码级 walkthrough 见维护人员运行时章节。本页只列 HTTP 入口。
通用 CRUD 接口面:/business/*
| Endpoint | Method | 用途 |
|---|---|---|
/business/getModelBysId/{moduleId} |
GET | 返回某个模块的表单布局,也就是五键组合(formData、gdsformconst、gdsjurisdiction、billnosetting、report)。 |
/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 | 下拉加载调用的分页变体。 |
这些端点在切片 1(getModelBysId + 网格加载 + 保存)和切片 3(基于视图的读取变体)中有更详细说明。处理类位于 xlyEntry/src/main/java/com/xly/web/businessweb/。
元数据管理端点
配置侧动作(创建模块、定义表单、声明虚拟表)在 xlyEntry/src/main/java/com/xly/web/systemweb/ 下有一套并行接口面:
| Endpoint root | Controller | 用途 |
|---|---|---|
/gdsmodule/* |
GdsmoduleController |
模块树 CRUD,包括 getModuleTreePro、addGdsmodule、updateGdsmodule。 |
/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。