[ { "id": 271, "pid": 0, "code": "fields", "name": "查询字段", "category": "param", "type": "array", "desc": "查询字段,不传则返回所有字段", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 282, "pid": 0, "code": "groupBy", "name": "分组规则", "category": "param", "type": "array", "desc": "GROUP BY 字段列表,配合 fields 中的聚合字段使用", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 287, "pid": 0, "code": "orderBy", "name": "排序规则", "category": "param", "type": "array", "desc": "排序规则列表,多项按顺序依次应用", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 299, "pid": 0, "code": "relations", "name": "资源关联", "category": "param", "type": "array", "desc": "关联配置列表,支持 JOIN(inner / left / right)将关联字段合并到主查询,或子查询(hasOne / hasMany)将关联数据聚合为独立 JSON 字段", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 258, "pid": 0, "code": "conditions", "name": "树形查询条件", "category": "param", "type": "json", "desc": "WHERE 条件树。\rexprs 每项生成一段比较:[{columnSqlFunc}(]{columnResource}.{column}[)] {operator} {value},同层多项以 type(and/or) 连接;\rchildren 为同结构子节点,递归嵌套实现复杂过滤。", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 297, "pid": 0, "code": "limit", "name": "每页条数", "category": "param", "type": "integer", "desc": "返回的最大记录数", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "30" }, { "id": 298, "pid": 0, "code": "offset", "name": "偏移量", "category": "param", "type": "integer", "desc": "跳过的记录数", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "0" }, { "id": 259, "pid": 258, "code": "type", "name": "逻辑连接符", "category": "param", "type": "string", "desc": "当前节点的逻辑运算符,将 exprs 各项与 children 各组以 AND 或 OR 连接", "isRequired": true, "constraints": { "enum": [ "and", "or" ] }, "rank": 0, "ref_id": 0, "df_val": "and" }, { "id": 261, "pid": 258, "code": "children", "name": "子条件", "category": "param", "type": "array", "desc": "子条件节点,递归结构", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 260, "pid": 258, "code": "exprs", "name": "条件表达式列表", "category": "param", "type": "array", "desc": "当前层的叶子比较列表,每项生成一个 column {operator} value 片段,同层多项以 type 连接", "isRequired": true, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 262, "pid": 260, "code": "items", "name": "_items", "category": "param", "type": "json", "desc": "", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 312, "pid": 261, "code": "items", "name": "_items", "category": "param", "type": "json", "desc": "", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 258, "df_val": "" }, { "id": 263, "pid": 262, "code": "column", "name": "字段编码", "category": "param", "type": "string", "desc": "", "isRequired": true, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 264, "pid": 262, "code": "columnResource", "name": "所属资源", "category": "param", "type": "string", "desc": "字段所属资源标识,取值为顶层 resource 或 relations[].code", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 268, "pid": 262, "code": "columnSqlFunc", "name": "列SQL函数", "category": "param", "type": "string", "desc": "对列应用 SQL 函数后再参与比较,拼接为 {func}({columnResource}.{column}) {operator} {value}。\r\n支持 SQL-92 / SQL:1999 / SQL:2003 标准函数及数据库方言函数,如 DATE、UPPER、ROUND。\r\n需要第二参数的函数(如 ROUND、CAST)配合 columnSqlFuncParam 使用。", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 269, "pid": 262, "code": "columnSqlFuncParam", "name": "列SQL函数参数", "category": "param", "type": "string", "desc": "columnSqlFunc 的附加参数,按函数类型用途不同:\r\r通用函数(有 param 时):{func}({columnResource}.{column}, {columnSqlFuncParam}) {operator} {value}\r 示例:ROUND(col, 2) → columnSqlFuncParam=\"2\"\r SUBSTRING(col, 1, 10) → columnSqlFuncParam=\"1, 10\"\r\rJSON 函数(param 为 JSON 路径表达式):\r json_member_of(value 是否是列 JSON 数组的成员):\r 无 param:JSON_CONTAINS({value}, JSON_ARRAY({column}))\r 有 param:JSON_CONTAINS({columnSqlFuncParam}, JSON_ARRAY({column}))\r json_contains(列 JSON 是否包含 value):\r 无 param:JSON_CONTAINS({column}, JSON_ARRAY({value}))\r 有 param:JSON_CONTAINS({columnSqlFuncParam}, JSON_ARRAY({value}))", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 265, "pid": 262, "code": "operator", "name": "运算符", "category": "param", "type": "string", "desc": "标准 SQL 比较运算符:\r\n= / != / \u003e / \u003e= / \u003c / \u003c=\r\nLIKE:模糊匹配(%keyword%)\r\nIN:包含,value 逗号分隔多值\r\nIS NULL / IS NOT NULL:空值判断,无需 value\r\nREGEXP:正则匹配", "isRequired": true, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "=" }, { "id": 266, "pid": 262, "code": "value", "name": "比较值", "category": "param", "type": "string", "desc": "比较目标,内容由 valueType 决定。operator 为 IS NULL/IS NOT NULL 时可省略", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 267, "pid": 262, "code": "valueType", "name": "比较值类型", "category": "param", "type": "string", "desc": "先选类型再填 value:\r\nstring:value 填字面量如 '2024-01-01'\r\nfunc:value 填内置函数名 UserID|UserUuid|UserRolesUuid|UserPlatform|UserSaaS\r\nparam:value 填请求参数路径如 body.status\r\nsql:value 填原始SQL如 CURRENT_DATE", "isRequired": false, "constraints": { "enum": [ "string", "func" ] }, "rank": 0, "ref_id": 0, "df_val": "string" }, { "id": 270, "pid": 262, "code": "ignoreEmptyParam", "name": "忽略空参数", "category": "param", "type": "bool", "desc": "当 valueType=param 且请求参数值为空(空字符串或 null)时,跳过该条件不生成 SQL。用于实现可选过滤项", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "false" }, { "id": 272, "pid": 271, "code": "oneOf", "name": "字段编码", "category": "param", "type": "string", "desc": "字段引用,格式:{columnResource}.{column} 或 {column}", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 279, "pid": 271, "code": "oneOf", "name": "表达式字段", "category": "param", "type": "json", "desc": "", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 275, "pid": 271, "code": "oneOf", "name": "资源字段", "category": "param", "type": "json", "desc": "", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 278, "pid": 275, "code": "alias", "name": "别名", "category": "param", "type": "string", "desc": "", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 276, "pid": 275, "code": "column", "name": "字段编码", "category": "param", "type": "string", "desc": "", "isRequired": true, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 277, "pid": 275, "code": "columnResource", "name": "所属资源", "category": "param", "type": "string", "desc": "字段所属资源标识,取值为顶层 resource 或 relations[].code", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 281, "pid": 279, "code": "alias", "name": "别名", "category": "param", "type": "string", "desc": "", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 280, "pid": 279, "code": "expr", "name": "SQL 表达式", "category": "param", "type": "string", "desc": "SQL 表达式:如 COUNT(*) / SUM(amount)\r{column}:字段编码,默认归属顶层 resource\r{columnResource}.{column}:显式指定资源的字段引用", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 283, "pid": 282, "code": "oneOf", "name": "分组表达式", "category": "param", "type": "string", "desc": "SQL 表达式:如 COUNT(*) / SUM(amount)\r{column}:字段编码,默认归属顶层 resource\r{columnResource}.{column}:显式指定资源的字段引用", "isRequired": true, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 284, "pid": 282, "code": "oneOf", "name": "资源字段", "category": "param", "type": "json", "desc": "", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 285, "pid": 284, "code": "column", "name": "字段编码", "category": "param", "type": "string", "desc": "", "isRequired": true, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 286, "pid": 284, "code": "columnResource", "name": "所属资源", "category": "param", "type": "string", "desc": "字段所属资源标识,取值为顶层 resource 或 relations[].code", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 288, "pid": 287, "code": "oneOf", "name": "SQL 表达式 (ASC)", "category": "param", "type": "string", "desc": "SQL 表达式:如 COUNT(*) / SUM(amount)\r{column}:字段编码,默认归属顶层 resource\r{columnResource}.{column}:显式指定资源的字段引用\r默认升序(asc)", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 289, "pid": 287, "code": "oneOf", "name": "SQL 表达式排序", "category": "param", "type": "json", "desc": "", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 292, "pid": 287, "code": "oneOf", "name": "资源字段排序", "category": "param", "type": "json", "desc": "", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 291, "pid": 289, "code": "direction", "name": "排序方向", "category": "param", "type": "string", "desc": "", "isRequired": false, "constraints": { "enum": [ "asc", "desc" ] }, "rank": 0, "ref_id": 0, "df_val": "asc" }, { "id": 290, "pid": 289, "code": "expr", "name": "SQL 表达式", "category": "param", "type": "string", "desc": "SQL 表达式:如 COUNT(*) / SUM(amount)\r{column}:字段编码,默认归属顶层 resource\r{columnResource}.{column}:显式指定资源的字段引用", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 293, "pid": 292, "code": "column", "name": "字段编码", "category": "param", "type": "string", "desc": "", "isRequired": true, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 295, "pid": 292, "code": "columnResource", "name": "所属资源", "category": "param", "type": "string", "desc": "", "isRequired": true, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 296, "pid": 292, "code": "direction", "name": "排序方向", "category": "param", "type": "string", "desc": "", "isRequired": false, "constraints": { "enum": [ "asc", "desc" ] }, "rank": 0, "ref_id": 0, "df_val": "asc" }, { "id": 300, "pid": 299, "code": "items", "name": "", "category": "param", "type": "json", "desc": "", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 305, "pid": 300, "code": "actuallyField", "name": "实际资源字段", "category": "param", "type": "string", "desc": "目标资源(code)参与 ON 条件的字段", "isRequired": true, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 304, "pid": 300, "code": "actuallyResource", "name": "实际资源", "category": "param", "type": "string", "desc": "被关联的目标资源编码(相当于 SQL 表名)。JOIN 拼接为:{type} JOIN {actuallyResource} AS {code} ON {code}.{actuallyField} = {relationResource}.{relationField}", "isRequired": true, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 303, "pid": 300, "code": "code", "name": "关联标识", "category": "param", "type": "string", "desc": "关联唯一标识,同时作为别名:JOIN 时为表别名(AS code),子查询时为结果 JSON 字段的键名", "isRequired": true, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 302, "pid": 300, "code": "name", "name": "关联名称", "category": "param", "type": "string", "desc": "关联的显示名称", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 307, "pid": 300, "code": "relationField", "name": "被关联资源字段", "category": "param", "type": "string", "desc": "ON 条件对端资源的字段", "isRequired": true, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 306, "pid": 300, "code": "relationResource", "name": "被关联资源", "category": "param", "type": "string", "desc": "ON 条件对端的资源编码(通常为主资源或父关联资源)", "isRequired": true, "constraints": {}, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 301, "pid": 300, "code": "type", "name": "关联类型", "category": "param", "type": "string", "desc": "关联模式:\r\ninner / left / right:SQL JOIN,将关联资源字段合并到主查询行\r\nhasOne:子查询,关联结果聚合为单个对象(result[code] = {})\r\nhasMany:子查询,关联结果聚合为对象数组(result[code] = [...])", "isRequired": true, "constraints": { "enum": [ "inner", "left", "right", "hasOne", "hasMany" ] }, "rank": 0, "ref_id": 0, "df_val": "" }, { "id": 309, "pid": 300, "code": "groupBy", "name": "关联分组,仅 hasOne/hasMany 有效", "category": "param", "type": "array", "desc": "", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 282, "df_val": "" }, { "id": 310, "pid": 300, "code": "orderBy", "name": "关联排序,仅 hasOne/hasMany 有效", "category": "param", "type": "array", "desc": "", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 287, "df_val": "" }, { "id": 308, "pid": 300, "code": "conditions", "name": "关联的过滤条件", "category": "param", "type": "json", "desc": "", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 258, "df_val": "" }, { "id": 311, "pid": 300, "code": "limit", "name": "关联条数限制,仅 hasOne/hasMany 有效", "category": "param", "type": "integer", "desc": "", "isRequired": false, "constraints": {}, "rank": 0, "ref_id": 297, "df_val": "" } ]