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 }
```
@@ -0,0 +1,136 @@
# FMS 数据库 Schema 参考
## 模块管理核心六表
### s_module(模块定义)
| 列 | 类型 | 说明 |
|----|------|------|
| b_id | BIGINT PK | 不可变雪花 ID |
| b_code | VARCHAR(50) UNIQUE | 可变小写编码,如 `m_biz` |
| b_parent_id | BIGINT | 父模块 ID(NULL=根) |
| b_name | NVARCHAR(200) | 模块名称 |
| b_module_type | VARCHAR(20) | `directory` / `page` / `data` |
| b_canuse | TINYINT | 1=启用 |
| b_canmenu | TINYINT | 1=显示在菜单 |
| b_xh | INT | 排序号 |
| b_route | VARCHAR(500) | 页面路由 |
| b_icon | VARCHAR(200) | 图标 |
| b_memo | NVARCHAR(500) | 备注 |
### s_module_field(字段定义)
| 列 | 类型 | 说明 |
|----|------|------|
| b_id | BIGINT PK | 雪花 ID |
| b_module_id | BIGINT FK→s_module | 所属模块 |
| b_code | VARCHAR(50) | 字段编码 |
| b_name | NVARCHAR(200) | 字段名称 |
| b_data_type | VARCHAR(50) | 数据类型:text/number/money/date/datetime/checkbox/select |
| b_field_type | VARCHAR(50) | 字段类型:normal/key/auto/memo |
| b_db_field | VARCHAR(200) | 对应数据库字段名 |
| b_db_table | VARCHAR(200) | 对应数据库表名(多表关联时用) |
| b_xh | INT | 排序号 |
| b_canuse | TINYINT | 1=启用 |
| b_memo | NVARCHAR(500) | 备注 |
### s_module_power(操作权限定义)
| 列 | 类型 | 说明 |
|----|------|------|
| b_id | BIGINT PK | 雪花 ID |
| b_module_id | BIGINT FK→s_module | 所属模块 |
| b_code | VARCHAR(50) | 权限编码:create/update/delete/... |
| b_name | NVARCHAR(200) | 权限名称 |
| b_canuse | TINYINT | 1=启用 |
| b_xh | INT | 排序号 |
### b_user_module(用户模块授权)
| 列 | 类型 | 说明 |
|----|------|------|
| b_user_id | BIGINT FK→b_user | 用户 |
| b_module_id | BIGINT FK→s_module | 授予的模块 |
### b_user_power(用户操作权限)
| 列 | 类型 | 说明 |
|----|------|------|
| b_user_id | BIGINT FK→b_user | 用户 |
| b_power_id | BIGINT FK→s_module_power | 授予的操作权限 |
### b_i18n(多语言翻译)
| 列 | 类型 | 说明 |
|----|------|------|
| b_id | BIGINT PK | 雪花 ID |
| b_locale | VARCHAR(10) | 语言代码:zh-CN/en-US/... |
| b_key | VARCHAR(200) | 翻译键 |
| b_value | NVARCHAR(MAX) | 翻译文本 |
| b_module_id | BIGINT FK→s_module | 关联模块(可选) |
| b_group | VARCHAR(50) | 分组类型 |
## 扩展表(模块配置)
### s_module_field_list(列表视图配置)
| 列 | 类型 | 说明 |
|----|------|------|
| b_id | BIGINT PK | 雪花 ID |
| b_module_id | BIGINT FK→s_module | 所属模块 |
| b_field_id | BIGINT FK→s_module_field | 关联字段 |
| b_visible | TINYINT | 1=显示在列表 |
| b_width | INT | 列宽 |
| b_xh | INT | 列顺序 |
| b_editor_type | VARCHAR(50) | 编辑控件类型 |
### s_module_field_edit(编辑视图配置)
| 列 | 类型 | 说明 |
|----|------|------|
| b_id | BIGINT PK | 雪花 ID |
| b_module_id | BIGINT FK→s_module | 所属模块 |
| b_field_id | BIGINT FK→s_module_field | 关联字段 |
| b_visible | TINYINT | 1=编辑时可见 |
| b_group | VARCHAR(50) | 分组 |
| b_xh | INT | 字段排列顺序 |
| b_width | INT | 编辑控件宽度 |
### s_module_field_query(查询条件配置)
| 列 | 类型 | 说明 |
|----|------|------|
| b_id | BIGINT PK | 雪花 ID |
| b_module_id | BIGINT FK→s_module | 所属模块 |
| b_field_id | BIGINT FK→s_module_field | 关联字段 |
| b_visible | TINYINT | 1=显示为查询条件 |
| b_operator | VARCHAR(20) | 运算符:=/like/in/between |
| b_xh | INT | 排列顺序 |
| b_option_config | NVARCHAR(500) | 选项配置(select 用) |
### s_module_auto_code(自动编号规则)
| 列 | 类型 | 说明 |
|----|------|------|
| b_id | BIGINT PK | 雪花 ID |
| b_module_id | BIGINT FK→s_module | 所属模块 |
| b_prefix | VARCHAR(50) | 前缀 |
| b_separator | VARCHAR(10) | 分隔符 |
| b_date_format | VARCHAR(50) | 日期格式:yyyyMMdd |
| b_sequence_width | INT | 流水号宽度 |
| b_reset_type | VARCHAR(20) | 重置类型:none/year/month/day |
| b_start_value | BIGINT | 起始值 |
| b_current_period | VARCHAR(50) | 当前周期值 |
| b_current_value | BIGINT | 当前流水号 |
| b_save_table | VARCHAR(200) | 保存到的表 |
| b_field_name | VARCHAR(200) | 保存到的字段 |
## 业务表命名惯例
- `s_*` — 系统配置表(static/system)
- `b_*` — 业务表/基础表(business/base)
- `bf_*` — 业务-文件关联表
- `v_*` — 视图
- 主键统一:`b_id BIGINT`
- 排序字段:`b_xh INT`
- 启用字段:`b_canuse TINYINT`(0/1)