20260802220544

This commit is contained in:
oneao committed 2026-08-02 22:05:44 +08:00
1 parent c00329b5a4
commit 4fc9040a8a
60 files changed
+6273 -908

No files matched your search

@@ -0,0 +1,148 @@
# FMS API 详细参数参考
## DataController 端点参数
### POST /data/loaddata
```
Body: {
"view_name": "string (required) — 表名或视图名",
"search_condition": "string (optional) — WHERE 条件表达式,如 b_id = 1 AND b_name LIKE N'%关键词%'",
"order_by": "string (optional) — 排序,如 b_id ASC 或 b_xh ASC, b_id DESC",
"search_columns": ["string"] (optional) — 查询列,默认 *"
}
Response: { code: 0, message: "操作成功", data: [{...row}] }
```
### POST /data/page
```
Body: {
"view_name": "string (required)",
"order_by": "string (required) — 支持逗号分隔多字段",
"page_no": int (optional, default 1),
"page_size": int (optional, default 20),
"search_condition": "string (optional)",
"search_columns": ["string"] (optional)
}
Response: {
code: 0,
data: {
rows: [{...row}],
row_count: int,
total: int,
page_no: int,
page_size: int
}
}
```
### POST /data/saveobjt
```
Body: [{
"table": "string (required) — 目标表名",
"key_field": "string (required) — 主键字段名,通常为 b_id",
"inserts": [{...row}] (optional) — 新增行,key_field 值 < 0 时自动分配雪花ID",
"updates": [{...row}] (optional) — 修改行,必须包含 key_field 值",
"deletes": [{...row}] (optional) — 删除行,必须包含 key_field 值",
}]
Response: { code: 0, message: "操作成功", data: null }
```
执行顺序:deletes → updates → inserts。整体在一个事务中。
### POST /data/loaddatabysql
```
Body: { "sql": "string (required) — 仅允许 SELECT 或 WITH 开头" }
Response: { code: 0, data: [{...row}] }
```
安全检查:
- 必须以 SELECT 或 WITH 开头
- 禁止 INSERT/UPDATE/DELETE/DROP/ALTER/CREATE/EXEC/GRANT 等 DML/DDL
- 禁止 SQL 注释(`--`、`/* */`)
- 禁止分号
### GET /data/nextid
```
Query: ?count=int (optional, default 1)
Response: {
code: 0,
data: "1234567890123456" (count=1) | ["id1", "id2"] (count>1)
}
```
### GET /data/nextcode
```
Query: ?moduleId=long&count=int (optional, default 1)
Response: {
code: 0,
data: "PREFIX2025080200001" (count=1) | ["code1", "code2"] (count>1)
}
```
### POST /data/describe
```
Body: { "table": "string" }
Response: { code: 0, data: [{ name: "b_id", type: "bigint", nullable: false, size: 19 }] }
```
## AuthController
### POST /auth/login
```
Body: {
"orgid": "string (required) — 机构码",
"userid": "string (required) — 账号",
"password": "string (optional) — 密码"
}
Response (成功): {
code: 0,
data: {
token: "eyJ...",
orgid: "ORG001",
user: { id: 1001, account: "admin", name: "管理员" }
}
}
Response (失败): { code: 401, message: "机构码、账号或密码错误" }
```
## FileController
### GET /file/config
```
Response: { code: 0, data: { storageType: "local" | "aliyun-oss" } }
```
### POST /file/upload (local 模式)
```
Content-Type: multipart/form-data
Fields: { files: File[], father: string, moduleId: string, cateId?: string }
Response: { code: 0, data: [{...fileRecord}] }
```
### POST /file/upload-credential (OSS 模式)
```
Response: { code: 0, data: { accessId, accessKey, host, policy, signature, expire } }
```
### POST /file/save-record (OSS 回调)
```
Body: { subid: string, father: string, mx_moduleid: string, mx_cate_id?: string }
```
### POST /file/delete
```
Body: { subid: string }
```