跳转至

UserAuthtimeController(用户管理)

管理企业域下的用户全生命周期:当前管理员个人信息查询、用户分页列表(按关键词 / 角色 / 状态 / 部门 / 自定义字段过滤)、单条用户详情、用户部门-软件-角色矩阵查询、按登录账号跨域查重、用户创建 / 更新 / 删除 / 批量废置、角色批量授权、Excel 导入导出、KM 角色配置、个人资料与密码修改。

  • 类级基址:${myapps.context-path.manager:}/api/authtime(完整路径:{manager-context}/api/authtime<相对路径>)
  • Tag:用户操作模块
  • 控制器源码:obpm-manager/src/main/java/cn/myapps/manager/authtime/controller/user/UserAuthtimeController.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(HTTP 状态码由 @ResponseStatus 决定,业务异常时仍为 200/201);业务校验失败常用 errcode=4001。
  • 少数端点(doList、getRoleWithDeptAndKMRelation)异常时方法体直接 return null(不返回统一 Resource),由 Spring 默认序列化为空响应体(HTTP 200,body 为 null)。
  • excelExportUserAndDept 返回 void,直接写二进制流到响应输出流(非统一 Resource)。
  • 鉴权说明见 index.md「鉴权说明」(adminToken JWT)。
  • 路径变量 domainid / domainId 为企业域 id;id / userid / userId 为用户 id;departmentid 为部门 id;applicationid 为软件 id。

1. 获取个人信息

获取当前登录管理员的个人信息(id、名称、类型、级别、是否开启三员管理、密码加密模式)。开启三员管理(security.mode)时附带管理员的部门列表与企业域列表。

  • 接口类型:REST 资源
  • 请求方式:GET
  • 请求路径:/myprofile(完整:{manager-context}/api/authtime/myprofile)
  • 鉴权:是(需管理员 adminToken,详见 index.md「鉴权说明」)
  • Tag:用户操作模块

请求参数

无。

请求示例

GET /api/authtime/myprofile HTTP/1.1

响应

结构:统一 Resource(见 ../index.md「统一响应结构」)。 data:Map,字段:

字段 类型 说明
id string 管理员用户 id
name string 管理员名称
type int 管理员类型(SuperUserVO.type)
level int 管理员级别(SuperUserVO.level)
isOpenSecurity boolean 是否开启三员管理(读取全局配置 security.mode)
encryptionMode string 登录密码加密模式(读取 LoginConfig.LOGIN_PASSWORD_ENCRYPTION_MODE,缺省 0)
departments array 部门列表(仅 isOpenSecurity=true 时返回)
domains array 企业域列表(仅 isOpenSecurity=true 时返回)

成功示例:

{
  "errcode": 0,
  "errmsg": "ok",
  "data": {
    "id": "__U001",
    "name": "admin",
    "type": 1,
    "level": 1,
    "isOpenSecurity": false,
    "encryptionMode": "0"
  },
  "errors": null
}
失败示例:方法签名 throws Exception,异常由 Spring 默认异常处理(HTTP 500,无统一 Resource 体)。


2. 获取用户列表

按企业域分页查询用户列表,支持按关键词(searchWord,模糊匹配)、角色(roleid)、状态(status)、部门(departmentid)、排序(orderby)、自定义扩展字段(fieldExtends)过滤。响应会处理上级用户 / 代理人的循环引用,并把管理 / 接口部门 id 数组解析为部门对象列表。

  • 接口类型:REST 资源
  • 请求方式:POST
  • 请求路径:/domain/{domainid}/users(完整:{manager-context}/api/authtime/domain/{domainid}/users)
  • 鉴权:是
  • Tag:用户操作模块

请求参数

参数名 位置 类型 必填 说明
domainid path string 是 企业域 id(空字符串返回 errcode=4001)
content body JSON 是 过滤条件包体(字段见下)
currpage query string 否 当前页码,缺省取 body 的 currpage,再缺省 1
lines query string 否 每页条数,缺省取 body 的 lines,再缺省 10
departmentid query string 否 部门 id,缺省取 body 的 departmentid
orderby query string 否 排序字段,缺省取 body 的 orderby

请求体

JSON 对象(application/json):

字段 类型 必填 说明
searchWord string 是 关键词,空字符串或 "null" 视为不传
roleid string 否 角色 id,空字符串或 "null" 视为不传
status int 否 用户状态
fieldExtends object 否 自定义字段扩展过滤(键值对 Map)
currpage any 否 当前页码(query 缺省时回退)
lines any 否 每页条数(query 缺省时回退)
departmentid string 否 部门 id(query 缺省时回退)
orderby string 否 排序字段(query 缺省时回退)

请求示例

POST /api/authtime/domain/__P1UD2yVWpnFpUedONr/users?currpage=1&lines=20 HTTP/1.1
Content-Type: application/json

{
  "searchWord": "admin",
  "roleid": "",
  "status": 1,
  "fieldExtends": {}
}

响应

结构:统一 Resource。 data:DataPackage<UserVO>,字段:

字段 类型 说明
linesPerPage int 每页条数
pageCount int 总页数
pageNo int 当前页码
rowCount int 总记录数
datas array\<UserVO> 用户数组(每个元素的 superior、proxyUser 已替换为仅含 id/name 的精简对象,避免循环引用)
条件 errcode errmsg data
domainid 为空 4001 企业域不存在 null
成功 0 ok DataPackage<UserVO>
抛异常 — — null(控制器 catch 后 return null,不返回统一 Resource)

成功示例:

{
  "errcode": 0,
  "errmsg": "ok",
  "data": {
    "linesPerPage": 20,
    "pageCount": 1,
    "pageNo": 1,
    "rowCount": 1,
    "datas": [
      {
        "id": "__U001",
        "name": "admin",
        "loginno": "admin",
        "status": 1,
        "superior": { "id": "__U002", "name": "张三" },
        "proxyUser": null
      }
    ]
  },
  "errors": null
}
失败示例:
HTTP 200,响应体为 null(异常被吞掉,返回 Java null)


3. 获取指定用户

按用户 id 查询用户详情。响应会处理上级用户 / 代理人的循环引用。用户不存在时返回 errcode=4001。

  • 接口类型:REST 资源
  • 请求方式:GET
  • 请求路径:/user/{id}(完整:{manager-context}/api/authtime/user/{id})
  • 鉴权:是
  • Tag:用户操作模块

请求参数

参数名 位置 类型 必填 说明
id path string 是 用户 id

请求示例

GET /api/authtime/user/__U001 HTTP/1.1

响应

结构:统一 Resource。 data:UserVO(superior / proxyUser 已替换为仅含 id/name 的精简对象)。

条件 errcode errmsg data
用户不存在 4001 用户不存在 null
成功 0 ok UserVO

成功示例:

{
  "errcode": 0,
  "errmsg": "ok",
  "data": {
    "id": "__U001",
    "name": "admin",
    "loginno": "admin",
    "status": 1,
    "superior": null,
    "proxyUser": null
  },
  "errors": null
}
失败示例:
{ "errcode": 4001, "errmsg": "用户不存在", "data": null, "errors": null }


4. 获取指定用户的部门角色和km角色的关系

按用户 id 查询其「部门 → 软件 → 角色」矩阵,前端用于展示用户在各应用中各部门下的角色绑定。用户不存在时返回 errcode=4001。

  • 接口类型:REST 资源
  • 请求方式:GET
  • 请求路径:/user/{userid}/rolewithdeptandkmrelation(完整:{manager-context}/api/authtime/user/{userid}/rolewithdeptandkmrelation)
  • 鉴权:是
  • Tag:用户操作模块

请求参数

参数名 位置 类型 必填 说明
userid path string 是 用户 id

请求示例

GET /api/authtime/user/__U001/rolewithdeptandkmrelation HTTP/1.1

响应

结构:统一 Resource。 data:JSONObject,字段:

字段 类型 说明
departmentdata array\<Map> 部门矩阵列表,元素字段见下
departmentstatu boolean 固定为 true

departmentdata 元素字段:

字段 类型 说明
departmentId string 部门 id
departmentName string 部门名称
isDefaultDepartment boolean 是否为该用户的默认部门
applicationData array\<Map> 该部门下的软件-角色绑定列表

applicationData 元素字段:

字段 类型 说明
applicationId string 软件 id
applicationName string 软件名称(描述为空时取 name)
roleData array\<Map> 角色列表(roleId / roleName)
条件 errcode errmsg data
用户不存在 4001 用户不存在 null
成功 0 ok 上述 JSONObject
抛异常 — — null(控制器 catch 后 return null,不返回统一 Resource)

成功示例:

{
  "errcode": 0,
  "errmsg": "ok",
  "data": {
    "departmentdata": [
      {
        "departmentId": "__DEPT01",
        "departmentName": "研发部",
        "isDefaultDepartment": true,
        "applicationData": [
          {
            "applicationId": "__APP01",
            "applicationName": "协同办公",
            "roleData": [ { "roleId": "__ROLE01", "roleName": "管理员" } ]
          }
        ]
      }
    ],
    "departmentstatu": true
  },
  "errors": null
}
失败示例:
HTTP 200,响应体为 null(异常被吞掉,返回 Java null)


5. 根据账号获取指定用户(跨域查重)

按登录账号 loginNo 查询所有同名账号用户,返回第一个所属企业域与路径 domainid 不一致的用户(用于检测账号在其他域是否已被占用)。命中时返回脱敏后的用户资料;无跨域命中时返回 errcode=4001。

  • 接口类型:REST 资源
  • 请求方式:GET
  • 请求路径:/domain/{domainid}/user(完整:{manager-context}/api/authtime/domain/{domainid}/user)
  • 鉴权:是
  • Tag:用户操作模块

请求参数

参数名 位置 类型 必填 说明
domainid path string 是 企业域 id(仅作排除条件)
loginNo query string 是 登录账号

请求示例

GET /api/authtime/domain/__P1UD2yVWpnFpUedONr/user?loginNo=admin HTTP/1.1

响应

结构:统一 Resource。 data:JSONObject,字段:

字段 类型 说明
name string 用户名称
loginpwd string 解密后的登录密码(Security.decryptPassword)
email string 邮箱
telephone string 手机号
telephone2 string 备用手机号
field1~field10 string 10 个自定义扩展字段(field11 ~ field25 源码已注释不返回)
条件 errcode errmsg data
无跨域同名用户 4001 用户不存在 null
命中跨域同名用户 0 ok 上述 JSONObject

成功示例:

{
  "errcode": 0,
  "errmsg": "ok",
  "data": {
    "name": "管理员",
    "loginpwd": "plain-password",
    "email": "admin@example.com",
    "telephone": "13800138000",
    "telephone2": "",
    "field1": "", "field2": "", "field3": "", "field4": "", "field5": "",
    "field6": "", "field7": "", "field8": "", "field9": "", "field10": ""
  },
  "errors": null
}
失败示例:
{ "errcode": 4001, "errmsg": "用户不存在", "data": null, "errors": null }


6. 创建用户

在指定企业域下新建用户。校验上级 / 代理人不能为自身、登录账号不能为 admin、代理人起止时间合法性、密码长度(LOGIN_PASSWORD_LENGTH)与密码字符规则(checkPassWord)。密码前端做「末两位挪到前面再 BASE64 解码」的轻量混淆。成功后若域开启了企业微信代理(非 WEIXIN_PROXY_TYPE_NONE),同步推送至企业微信端。响应 HTTP 状态码为 201。

  • 接口类型:REST 资源
  • 请求方式:POST
  • 请求路径:/domain/{domainid}/user(完整:{manager-context}/api/authtime/domain/{domainid}/user)
  • 鉴权:是
  • Tag:用户操作模块

请求参数

参数名 位置 类型 必填 说明
domainid path string 是 企业域 id(写入用户的 domainid 字段)
content body JSON 是 UserVO 序列化字段(见下)

请求体

JSON 对象(application/json),关键字段:

字段 类型 必填 说明
loginno string 是 登录账号(不能为 admin)
loginpwd string 否 登录密码(前端混淆后的 BASE64 字符串)
name string 是 用户名称
superiorid string 否 上级用户 id(不能等于自身 id)
_proxyUser string 否 代理人用户 id(不能等于自身 id)
startProxyTime datetime 否 代理开始时间(设置代理人时必填且不得晚于结束时间)
endProxyTime datetime 否 代理结束时间(设置代理人时必填且不得早于当前时间)
_userRoleDepartmentJson string 否 用户-部门-角色绑定 JSON 数组文本(元素字段 userId/departmentId/roleId/applicationId)
其他 — 否 UserVO 的其他持久化字段(邮箱、电话、部门、状态、扩展字段等)

请求示例

POST /api/authtime/domain/__P1UD2yVWpnFpUedONr/user HTTP/1.1
Content-Type: application/json

{
  "loginno": "zhangsan",
  "loginpwd": "encoded-password",
  "name": "张三",
  "superiorid": "__U001",
  "_userRoleDepartmentJson": "[{\"departmentId\":\"__DEPT01\",\"roleId\":\"__ROLE01\",\"applicationId\":\"__APP01\"}]"
}

响应

结构:统一 Resource。 data:UserVO(新建并持久化后的对象,含生成的 id)。

条件 errcode errmsg data
上级为自身 4001 上级用户不能选择自身 null
代理人为自身 4001 代理人用户不能选择自身 null
账号为 admin 4001 {*[NotCanUseadminAsLoginno]*} null
代理开始时间晚于结束时间 4001 {*[page.core.calendar.overoftime]*} null
代理结束时间早于当前时间 4001 {*[cn.myapps.core.user.tip.proxyenddate_currenttime]*} null
密码长度不足 4001 {*[PasswordLengthCanNotLow]*}<N> null
密码字符不合法 500 checkPassWord 返回的提示 null
业务校验异常 500 <异常信息> null
成功 0 ok 新建 UserVO(HTTP 201)

成功示例:

{
  "errcode": 0,
  "errmsg": "ok",
  "data": {
    "id": "__NEWUSER001",
    "name": "张三",
    "loginno": "zhangsan",
    "domainid": "__P1UD2yVWpnFpUedONr",
    "status": 1
  },
  "errors": null
}
失败示例:
{ "errcode": 4001, "errmsg": "上级用户不能选择自身", "data": null, "errors": null }


7. 更新用户 km 角色权限

按 roleIds × userIds × deptIds 的笛卡尔积,为一批用户在其对应部门上批量绑定 KM 角色权限。

  • 接口类型:REST 资源
  • 请求方式:PUT
  • 请求路径:/domain/user/role/auth(完整:{manager-context}/api/authtime/domain/user/role/auth)
  • 鉴权:是
  • Tag:用户操作模块

请求参数

参数名 位置 类型 必填 说明
content body JSON 是 角色授权包体(字段见下)

请求体

JSON 对象(application/json):

字段 类型 必填 说明
roleIds string[] 是 KM 角色 id 数组
userIds string[] 是 用户 id 数组
deptIds string[] 是 部门 id 数组

请求示例

PUT /api/authtime/domain/user/role/auth HTTP/1.1
Content-Type: application/json

{
  "roleIds": ["__KMROLE01"],
  "userIds": ["__U001", "__U002"],
  "deptIds": ["__DEPT01"]
}

响应

结构:统一 Resource。 data:null。

成功示例:

{ "errcode": 0, "errmsg": "ok", "data": null, "errors": null }
失败示例:
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


8. 保存 km 角色管理

按 ids 列出的用户批量保存 KM 角色配置:对每个用户取其默认部门,按 kmRoleSelectItem 逗号分隔的角色 id 列表,调用 createKmUseRole 写入该用户的 KM 角色绑定。

  • 接口类型:REST 资源
  • 请求方式:PUT
  • 请求路径:/domain/{domainid}/savekmconfig(完整:{manager-context}/api/authtime/domain/{domainid}/savekmconfig)
  • 鉴权:是
  • Tag:用户操作模块

请求参数

参数名 位置 类型 必填 说明
domainid path string 是 企业域 id(路径变量,方法签名持有但实际逻辑未直接使用)
jsonObject body JSON 是 配置包体(字段见下)

请求体

JSON 对象(application/json):

字段 类型 必填 说明
kmRoleSelectItem string 是 KM 角色 id 列表(逗号分隔)
ids string 是 用户 id 列表(逗号分隔)

请求示例

PUT /api/authtime/domain/__P1UD2yVWpnFpUedONr/savekmconfig HTTP/1.1
Content-Type: application/json

{
  "kmRoleSelectItem": "__KMROLE01,__KMROLE02",
  "ids": "__U001,__U002"
}

响应

结构:统一 Resource。 data:字符串 "保存成功"。

成功示例:

{ "errcode": 0, "errmsg": "ok", "data": "保存成功", "errors": null }
失败示例:
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


9. 更新用户

更新指定用户。校验上级 / 代理人不能为自身、登录账号不能为 admin、代理人起止时间合法性、密码长度与字符规则;支持密码占位符 888888qqqq(表示沿用原密码并按当前加密模式重编码)。禁用用户(status=0)时同步把已登录的 WebUser 状态置为 99(踢下线)。成功后若域开启了企业微信代理,同步推送至企业微信端。

  • 接口类型:REST 资源
  • 请求方式:PUT
  • 请求路径:/domain/{domainid}/user/{id}(完整:{manager-context}/api/authtime/domain/{domainid}/user/{id})
  • 鉴权:是
  • Tag:用户操作模块

请求参数

参数名 位置 类型 必填 说明
domainid path string 是 企业域 id
id path string 是 用户 id(用作持久化依据,覆盖 body 中的 id)
content body JSON 是 UserVO 序列化字段(同「创建用户」)

请求体

同「创建用户」请求体,但额外支持:

字段 类型 必填 说明
loginpwd string 否 登录密码;值为 888888qqqq 时表示沿用原密码并按当前加密模式重新编码

请求示例

PUT /api/authtime/domain/__P1UD2yVWpnFpUedONr/user/__U001 HTTP/1.1
Content-Type: application/json

{
  "id": "__U001",
  "loginno": "zhangsan",
  "loginpwd": "888888qqqq",
  "name": "张三",
  "status": 1
}

响应

结构:统一 Resource。 data:字符串 "保存成功"。

条件 errcode errmsg data
上级 / 代理人为自身 4001 对应提示 null
账号为 admin 4001 {*[NotCanUseadminAsLoginno]*} null
代理时间非法 4001 对应提示 null
密码长度不足 4001 {*[PasswordLengthCanNotLow]*}<N> null
密码字符不合法 500 checkPassWord 返回的提示 null
业务校验异常 500 <异常信息> null
成功 0 ok 保存成功

成功示例:

{ "errcode": 0, "errmsg": "ok", "data": "保存成功", "errors": null }
失败示例:
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


10. 删除用户

按用户 id 数组批量删除用户,并把对应用户的 WebUser 会话状态置为 99(踢下线)。

  • 接口类型:REST 资源
  • 请求方式:DELETE
  • 请求路径:/domain/{domainId}/user(完整:{manager-context}/api/authtime/domain/{domainId}/user)
  • 鉴权:是
  • Tag:用户操作模块

请求参数

参数名 位置 类型 必填 说明
domainId path string 是 企业域 id(路径变量,方法签名持有但实际逻辑未直接使用)
ids body string[] 是 待删除的用户 id 数组

请求体

application/json,字符串数组:

[ "__U001", "__U002" ]

请求示例

DELETE /api/authtime/domain/__P1UD2yVWpnFpUedONr/user HTTP/1.1
Content-Type: application/json

[ "__U001" ]

响应

结构:统一 Resource。 data:字符串 "删除成功"。

成功示例:

{ "errcode": 0, "errmsg": "ok", "data": "删除成功", "errors": null }
失败示例:
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


11. 获取部门下的用户

分页查询「不属于指定部门」的用户列表(用于部门添加成员时从外部挑选)。响应结构同「获取用户列表」的 DataPackage<UserVO>(但**不**处理上级 / 代理人的循环引用)。

  • 接口类型:REST 资源
  • 请求方式:GET
  • 请求路径:/department/{departmentid}/users(完整:{manager-context}/api/authtime/department/{departmentid}/users)
  • 鉴权:是
  • Tag:用户操作模块

请求参数

参数名 位置 类型 必填 说明
departmentid path string 是 部门 id
currpage query string 否 当前页码,默认 1
pagelines query string 否 每页条数,默认 10

请求示例

GET /api/authtime/department/__DEPT01/users?currpage=1&pagelines=20 HTTP/1.1

响应

结构:统一 Resource。 data:DataPackage<UserVO>(结构同「获取用户列表」的 data)。

成功示例:

{
  "errcode": 0,
  "errmsg": "ok",
  "data": {
    "linesPerPage": 20,
    "pageCount": 1,
    "pageNo": 1,
    "rowCount": 1,
    "datas": [ { "id": "__U001", "name": "admin", "loginno": "admin", "status": 1 } ]
  },
  "errors": null
}
失败示例:
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


12. 用 excel 导入用户和部门

按上传 Excel 文件路径,把用户与部门导入指定企业域。文件扩展名必须为 .xls / .xlsx,否则返回 errcode=4001。

  • 接口类型:REST 资源
  • 请求方式:POST
  • 请求路径:/domain/{domainid}/user/import(完整:{manager-context}/api/authtime/domain/{domainid}/user/import)
  • 鉴权:是
  • Tag:用户操作模块

请求参数

参数名 位置 类型 必填 说明
domainid path string 是 企业域 id
jsonObject body JSON 是 导入参数包体(字段见下)

请求体

JSON 对象(application/json):

字段 类型 必填 说明
path string 是 上传 Excel 文件的相对路径(相对于 web 根)

请求示例

POST /api/authtime/domain/__P1UD2yVWpnFpUedONr/user/import HTTP/1.1
Content-Type: application/json

{ "path": "/uploads/import/users.xlsx" }

响应

结构:统一 Resource。 data:JSONObject(由 DomainProcess.excelImportToDomain 返回,结构由导入逻辑决定,通常含成功 / 失败计数)。

条件 errcode errmsg data
文件非 .xls / .xlsx 4001 {*[core.dts.excelimport.config.cannotimport]*} null
成功 0 ok 导入结果 JSONObject
抛异常 500 <异常信息> null

成功示例:

{
  "errcode": 0,
  "errmsg": "ok",
  "data": { "successCount": 10, "failCount": 0 },
  "errors": null
}
失败示例:
{ "errcode": 4001, "errmsg": "{*[core.dts.excelimport.config.cannotimport]*}", "data": null, "errors": null }


13. 导出用户和部门

把指定企业域下的全部用户与部门导出为 Excel 文件(文件名 用户列表.xls),通过响应输出流下发二进制。

  • 接口类型:REST 资源(二进制流)
  • 请求方式:GET
  • 请求路径:/domain/{domainid}/user/export(完整:{manager-context}/api/authtime/domain/{domainid}/user/export)
  • 鉴权:是
  • Tag:用户操作模块

请求参数

参数名 位置 类型 必填 说明
domainid path string 是 企业域 id

请求示例

GET /api/authtime/domain/__P1UD2yVWpnFpUedONr/user/export HTTP/1.1

响应

  • Content-Type:appliction/excel(源码原样拼写,注意拼写)
  • Content-Disposition:attachment;fileName=<URL 编码后的「用户列表.xls」>
  • 状态码:200(成功)
  • 响应体:Excel 二进制流(无统一 Resource)

注:本端点返回 void,异常被 catch 吞掉后无响应体输出。


14. 给角色批量添加用户

按 userIds × deptIds 的笛卡尔积,把指定角色绑定到每个用户的对应部门上(已存在的绑定会跳过)。若用户原本没有默认部门,自动取笛卡尔积中第一个部门作为默认部门。

  • 接口类型:REST 资源
  • 请求方式:POST
  • 请求路径:/user/batch(完整:{manager-context}/api/authtime/user/batch)
  • 鉴权:是
  • Tag:用户操作模块

请求参数

参数名 位置 类型 必填 说明
json body JSON 是 批量授权包体(字段见下)

请求体

JSON 对象(application/json):

字段 类型 必填 说明
userIds string[] 是 用户 id 数组(非空才处理)
deptIds string[] 是 部门 id 数组(非空才处理)
roleId string 是 角色 id

请求示例

POST /api/authtime/user/batch HTTP/1.1
Content-Type: application/json

{
  "userIds": ["__U001", "__U002"],
  "deptIds": ["__DEPT01"],
  "roleId": "__ROLE01"
}

响应

结构:统一 Resource。 data:null。

条件 errcode errmsg data
userIds 或 deptIds 为空 0 ok null(直接跳过逻辑)
成功 0 ok null
抛异常 500 <异常信息> null

成功示例:

{ "errcode": 0, "errmsg": "ok", "data": null, "errors": null }
失败示例:
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


15. 批量废置用户

把一批用户的状态置为离职(UserVO.DIMISSION),并把对应用户的 WebUser 会话状态置为 99(踢下线)。

  • 接口类型:REST 资源
  • 请求方式:PUT
  • 请求路径:/domain/{domainid}/user/abandonment(完整:{manager-context}/api/authtime/domain/{domainid}/user/abandonment)
  • 鉴权:是
  • Tag:用户操作模块

请求参数

参数名 位置 类型 必填 说明
domainid path string 是 企业域 id(路径变量,方法签名持有但实际逻辑未直接使用)
content body string 是 用户 id 的 JSON 数组文本(JSONArray.fromObject 解析)

请求体

application/json,字符串数组:

[ "__U001", "__U002" ]

请求示例

PUT /api/authtime/domain/__P1UD2yVWpnFpUedONr/user/abandonment HTTP/1.1
Content-Type: application/json

[ "__U001" ]

响应

结构:统一 Resource。 data:字符串 "成功"。

成功示例:

{ "errcode": 0, "errmsg": "ok", "data": "成功", "errors": null }
失败示例:
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


16. 更新用户信息(个人资料 / 密码)

当前管理员更新个人资料(姓名 / 邮箱 / 电话 / 头像),或修改登录密码(含原密码校验、二次确认、密码历史校验、密码长度与字符规则校验)。密码前端做「末两位挪到前面再 BASE64 解码」的轻量混淆。

  • 接口类型:REST 资源
  • 请求方式:POST
  • 请求路径:/domain/user/{userId}/detail(完整:{manager-context}/api/authtime/domain/user/{userId}/detail)
  • 鉴权:是
  • Tag:用户操作模块

请求参数

参数名 位置 类型 必填 说明
userId path string 是 用户 id
content body JSON 是 个人资料或密码修改包体(字段见下)

请求体

JSON 对象(application/json),按是否修改密码分两种形态:

形态一:修改密码(包体含 oldPassword)

字段 类型 必填 说明
oldPassword string 是 原密码(前端混淆后的 BASE64 字符串)
newpassword string 是 新密码(前端混淆后的 BASE64 字符串)
confirmPassword string 是 二次确认新密码(前端混淆后的 BASE64 字符串)

形态二:仅改资料(包体不含 oldPassword)

字段 类型 必填 说明
name string 是 用户名称
email string 是 邮箱
telephone string 是 手机号
avatar string 否 头像 URL

请求示例

POST /api/authtime/domain/user/__U001/detail HTTP/1.1
Content-Type: application/json

{
  "name": "管理员",
  "email": "admin@example.com",
  "telephone": "13800138000",
  "avatar": "/uploads/avatar/admin.png"
}

响应

结构:统一 Resource。 data:null。

条件 errcode errmsg data
两次输入的密码不一致 4001 两次输入的密码不一致 null
原密码错误 4001 原密码错误 null
密码长度不足 4001 密码长度不能小于<N> null
密码字符不合法 4001 checkPassWord 返回的提示 null
业务校验异常 500 <异常信息> null
成功 0 ok null

成功示例:

{ "errcode": 0, "errmsg": "ok", "data": null, "errors": null }
失败示例:
{ "errcode": 4001, "errmsg": "原密码错误", "data": null, "errors": null }