FieldextendAuthtimeController(字段扩展管理)¶
管理企业域下的自定义扩展字段(FieldExtendsVO,挂载到用户表 / 部门表 / 企业域表的 field1~fieldN 列):分页查询扩展字段列表、新建 / 更新 / 批量删除扩展字段,以及按企业域 + 字段类型 + 相关表查询尚未被占用的扩展字段列。
- 类级基址:
${myapps.context-path.manager:}/api/authtime(完整路径:{manager-context}/api/authtime<相对路径>) - Tag:字段扩展管理模块(控制器源码声明
@Tag(name = "字段扩展管理模块")) - 控制器源码:
obpm-manager/src/main/java/cn/myapps/manager/authtime/controller/fieldextends/FieldextendAuthtimeController.java - 公共说明:
- 类继承
BaseAuthTimeController,通过其success(errmsg, data)/error(errcode, errmsg, errors)返回统一Resource(字段errcode/errmsg/data/errors,结构见 ../index.md「统一响应结构」)。 - 多数端点在
try/catch内捕获Exception并e.printStackTrace()后返回errcode=500、errmsg=e.getMessage()、data=null;业务校验失败常用errcode=500(注意:本控制器业务校验失败也用500,未采用同模块惯用的4001)。OBPMValidateException单独捕获并以异常信息作为errmsg。 - 控制器未声明
@ResponseStatus,HTTP 状态码默认 200。 - 鉴权说明见 index.md「鉴权说明」(adminToken JWT)。
- 路径变量:
id为扩展字段 id(仅PUT /domain/fieldextend/{id}持有);domainid在DELETE /domain/fieldextend与GET /domain/getunusefields为 query 参数。 - 扩展字段序列化字段:
FieldExtendsVO关键字段为name(实际列名,如field1)、label(用户可见标签)、type(数据类型)、forTable(相关表,如tableUser/tableDept/tableDomain)、domainid、enabel(是否启用,源码原样拼写)、sortNumber、options、isNotNull、isReadonly、isSupportSearch。 - 标签命名规则:长度 2~50,由中文 / 字母 / 数字 /
_/./-组成,且以中文 / 字母 / 数字开头和结尾(控制器私有方法regex校验)。
1. 查询扩展字段列表¶
按企业域 + 字段类型(type)+ 相关表(fortable)+ 所属(belong)分页查询扩展字段列表。
- 接口类型:REST 资源
- 请求方式:
POST - 请求路径:
/domain/fieldextends(完整:{manager-context}/api/authtime/domain/fieldextends) - 鉴权:是(需管理员 adminToken,详见 index.md「鉴权说明」)
- Tag:字段扩展管理模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| content | body | JSON | 是 | 过滤条件包体(字段见下) |
| currpage | query | string | 否 | 当前页码,缺省 1 |
| pagelines | query | string | 否 | 每页条数,缺省 10 |
请求体¶
JSON 对象(application/json),字段:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| domainid | string | 否 | 企业域 id(缺省空字符串) |
| type | string | 否 | 字段数据类型(缺省空字符串) |
| fortable | string | 否 | 相关表(如 tableUser/tableDept/tableDomain,会被 trim) |
| belong | string | 否 | 所属 |
请求示例¶
POST /api/authtime/domain/fieldextends?currpage=1&pagelines=20 HTTP/1.1
Content-Type: application/json
{ "domainid": "__P1UD2yVWpnFpUedONr", "type": "string", "fortable": "tableUser", "belong": null }
响应¶
结构:统一 Resource。
data:DataPackage<FieldExtendsVO> 序列化后的 JSON 对象,字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| linesPerPage | int | 每页条数 |
| pageCount | int | 总页数 |
| pageNo | int | 当前页码 |
| rowCount | int | 总记录数 |
| datas | array\<FieldExtendsVO> | 扩展字段数组 |
成功示例:
{
"errcode": 0,
"errmsg": "ok",
"data": {
"linesPerPage": 20,
"pageCount": 1,
"pageNo": 1,
"rowCount": 1,
"datas": [
{
"id": "__FE001",
"name": "field1",
"label": "工号",
"type": "string",
"forTable": "tableUser",
"domainid": "__P1UD2yVWpnFpUedONr",
"enabel": true,
"sortNumber": 0,
"isNotNull": false,
"isReadonly": false,
"isSupportSearch": false
}
]
},
"errors": null
}
2. 更新扩展字段¶
按扩展字段 id 更新扩展字段。校验:所属字段(respectiveField)不能为 null;标签(label)不能为空且须符合命名规则;标签变更时在新所属表内不得重复。
- 接口类型:REST 资源
- 请求方式:
PUT - 请求路径:
/domain/fieldextend/{id}(完整:{manager-context}/api/authtime/domain/fieldextend/{id}) - 鉴权:是
- Tag:字段扩展管理模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| id | path | string | 是 | 待更新的扩展字段 id |
| jsonObj | body | JSON | 是 | 扩展字段属性(见下) |
请求体¶
JSON 对象(application/json),字段:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| respectiveField | string | 是 | 所属字段(实际列名,如 field1),为 null 时返回 所属字段已用尽 |
| label | string | 是 | 用户可见标签(不能为空,须符合命名规则) |
| type | string | 否 | 数据类型(为空时沿用原值,原值为空时取 FieldExtendsVO.TYPE_STRING) |
| enabel | string | 否 | 是否启用(字符串 true/false,源码原样拼写) |
| forTable | string | 否 | 相关表 |
| domainid | string | 否 | 企业域 id |
| options | string | 否 | 选项(用于下拉 / 单选 / 多选等) |
| isNotNull | boolean | 否 | 是否必填 |
| isReadonly | boolean | 否 | 是否只读 |
| isSupportSearch | boolean | 否 | 是否支持搜索 |
| sortNumber | string | 否 | 排序号(为 null 时取 0) |
请求示例¶
PUT /api/authtime/domain/fieldextend/__FE001 HTTP/1.1
Content-Type: application/json
{
"respectiveField": "field1",
"label": "工号",
"type": "string",
"enabel": "true",
"forTable": "tableUser",
"domainid": "__P1UD2yVWpnFpUedONr",
"isNotNull": true,
"isReadonly": false,
"isSupportSearch": true,
"sortNumber": "1"
}
响应¶
结构:统一 Resource。
data:字符串 "保存成功"。
| 条件 | errcode | errmsg | data |
|---|---|---|---|
respectiveField 为 null |
500 | 所属字段已用尽 |
null |
| 标签为空 | 500 | 标签不能为空! |
null |
| 标签不符合命名规则 | 500 | 名称必须是长度为2-50,由中文、字母、数字、下划线、'.'、'-'(以中文、字母、数字开头和结尾)组成的字符串! |
null |
| 标签在该属性表已存在 | 500 | 该标签在指定的属性表已存在! |
null |
| 待更新的字段不存在 | 500 | 该字段不存在! |
null |
| 业务校验异常 | 500 | <异常信息> |
null |
| 成功 | 0 | ok | 保存成功 |
成功示例:
失败示例:3. 新建扩展字段¶
新建扩展字段。校验:所属字段(respectiveField)不能为 null;标签不能为空且须符合命名规则;标签在该企业域的相关表内不得重复。
- 接口类型:REST 资源
- 请求方式:
POST - 请求路径:
/domain/fieldextend(完整:{manager-context}/api/authtime/domain/fieldextend) - 鉴权:是
- Tag:字段扩展管理模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| jsonObj | body | JSON | 是 | 扩展字段属性(见下) |
请求体¶
JSON 对象(application/json),字段同「更新扩展字段」请求体:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| respectiveField | string | 是 | 所属字段(实际列名,如 field1) |
| label | string | 是 | 用户可见标签(不能为空,须符合命名规则) |
| type | string | 否 | 数据类型 |
| enabel | string | 否 | 是否启用(字符串 true/false) |
| forTable | string | 否 | 相关表 |
| domainid | string | 否 | 企业域 id |
| options | string | 否 | 选项 |
| isNotNull | boolean | 否 | 是否必填 |
| isReadonly | boolean | 否 | 是否只读 |
| isSupportSearch | boolean | 否 | 是否支持搜索 |
| sortNumber | string | 否 | 排序号(为 null 时取 0) |
请求示例¶
POST /api/authtime/domain/fieldextend HTTP/1.1
Content-Type: application/json
{
"respectiveField": "field2",
"label": "入职日期",
"type": "date",
"enabel": "true",
"forTable": "tableUser",
"domainid": "__P1UD2yVWpnFpUedONr",
"isNotNull": false,
"isReadonly": false,
"isSupportSearch": false
}
响应¶
结构:统一 Resource。
data:字符串 "保存成功"。
| 条件 | errcode | errmsg | data |
|---|---|---|---|
respectiveField 为 null |
500 | 所属字段已用尽 |
null |
| 标签为空 | 500 | 标签不能为空! |
null |
| 标签不符合命名规则 | 500 | 名称必须是长度为2-50...组成的字符串! |
null |
| 标签在该企业域相关表已存在 | 500 | 该标签已存在 |
null |
| 业务校验异常 | 500 | <异常信息> |
null |
| 成功 | 0 | ok | 保存成功 |
成功示例:
失败示例:4. 删除扩展字段¶
按企业域 + 「字段名-id-相关表」组合数组批量删除扩展字段,删除前先调用 cleanFieldData 清空对应字段在该模块中的存量数据。
- 接口类型:REST 资源
- 请求方式:
DELETE - 请求路径:
/domain/fieldextend(完整:{manager-context}/api/authtime/domain/fieldextend) - 鉴权:是
- Tag:字段扩展管理模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| domainid | query | string | 是 | 企业域 id |
| fieldNameAndIds | body | string[] | 是 | 待删除条目数组,每个元素格式 <fieldName>-<fid>-<forTable>(按 - 切分为三段) |
请求体¶
application/json,字符串数组,元素格式 <fieldName>-<fid>-<forTable>:
请求示例¶
DELETE /api/authtime/domain/fieldextend?domainid=__P1UD2yVWpnFpUedONr HTTP/1.1
Content-Type: application/json
[ "field1-__FE001-tableUser" ]
响应¶
结构:统一 Resource。
data:字符串 "删除成功"。
成功示例:
失败示例:5. 获取未使用字段¶
按企业域 + 字段类型 + 相关表,查询该相关表中尚未被占用的扩展字段列名列表。fortable 为 tableUser 时查询用户表,为 tableDept 时查询部门表,其他值查询企业域表。若 type 包含 clob,则仅保留支持 clob 的字段(field8/field9/field10/field18/field19/field20)。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/domain/getunusefields(完整:{manager-context}/api/authtime/domain/getunusefields) - 鉴权:是
- Tag:字段扩展管理模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| domainid | query | string | 是 | 企业域 id |
| type | query | string | 是 | 字段数据类型(含 clob 时仅返回 clob 列) |
| fortable | query | string | 是 | 相关表(tableUser / tableDept / 其他) |
请求示例¶
GET /api/authtime/domain/getunusefields?domainid=__P1UD2yVWpnFpUedONr&type=string&fortable=tableUser HTTP/1.1
响应¶
结构:统一 Resource。
data:List<String>,未占用的扩展字段列名(如 ["field1", "field2", ...])。
成功示例:
失败示例: