From f349843dff00f2c90ac4d5794b3ed5f6eca63706 Mon Sep 17 00:00:00 2001 From: jsonwan Date: Tue, 10 Oct 2023 10:33:23 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=E6=8F=90=E4=BE=9B=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7=E6=9F=A5=E8=AF=A2=E3=80=81=E5=88=9B=E5=BB=BA=E3=80=81?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E7=9A=84APIGW=E6=8E=A5=E5=8F=A3=20#2472?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 增加接口文档 --- .../bk-api-gateway/v3/zh/create_account.md | 102 ++++++++++++++++++ .../bk-api-gateway/v3/zh/delete_account.md | 92 ++++++++++++++++ .../bk-api-gateway/v3/zh/search_account.md | 99 +++++++++++++++++ .../apidocs/zh_hans/create_account.md | 96 +++++++++++++++++ .../apidocs/zh_hans/delete_account.md | 86 +++++++++++++++ .../apidocs/zh_hans/search_account.md | 100 +++++++++++++++++ docs/apidoc/esb/jobv3-confapis/job.yaml | 35 +++++- 7 files changed, 609 insertions(+), 1 deletion(-) create mode 100644 docs/apidoc/bk-api-gateway/v3/zh/create_account.md create mode 100644 docs/apidoc/bk-api-gateway/v3/zh/delete_account.md create mode 100644 docs/apidoc/bk-api-gateway/v3/zh/search_account.md create mode 100644 docs/apidoc/esb/jobv3-confapis/apidocs/zh_hans/create_account.md create mode 100644 docs/apidoc/esb/jobv3-confapis/apidocs/zh_hans/delete_account.md create mode 100644 docs/apidoc/esb/jobv3-confapis/apidocs/zh_hans/search_account.md diff --git a/docs/apidoc/bk-api-gateway/v3/zh/create_account.md b/docs/apidoc/bk-api-gateway/v3/zh/create_account.md new file mode 100644 index 0000000000..675eaf85b6 --- /dev/null +++ b/docs/apidoc/bk-api-gateway/v3/zh/create_account.md @@ -0,0 +1,102 @@ +### 功能描述 + +创建账号(当前仅支持系统账号) + +### 请求参数 + +{{ bkapi_authorization_description }} + +#### Header参数 + +| 字段 | 类型 | 必选 | 描述 | +|---------------------------|------------|---------|------------| +| X-Bkapi-Authorization | string | 是 | 认证信息。详情参考[调用网关 API](https://github.com/TencentBlueKing/BKDocs/blob/master/ZH/7.0/APIGateway/apigateway/use-api/use-apigw-api.md) | +| Accept | string | 是 | 固定值。application/json| +| Content-Type | string | 是 | 固定值。application/json| + +#### Body参数 + +| 字段 | 类型 | 必选 | 描述 | +|---------------|------------|--------|------------| +| bk_scope_type | string | 是 | 资源范围类型。可选值: biz - 业务,biz_set - 业务集 | +| bk_scope_id | string | 是 | 资源范围ID,与bk_scope_type对应,表示业务ID或者业务集ID | +| account | string | 是 | 账号名称 | +| type | int | 是 | 账号类型(1:Linux,2:Windows)| +| category | int | 是 | 账号用途(1:系统账号)| +| password | string | 否 | 系统账号密码,账号用途为系统账号且账号类型为Windows时必传 | +| alias | string | 否 | 别名,不传则以账号名称作为别名 | +| description | string | 否 | 描述 | + +### 请求参数示例 + +- POST +```json +{ + "bk_scope_type": "biz", + "bk_scope_id": "1", + "account": "Admin", + "type": 2, + "category": 1, + "password": "AdminPassword", + "alias": "Admin", + "description": "An account for windows" +} +``` + +### 返回结果示例 + +```json +{ + "code": 0, + "message": null, + "result": true, + "data": { + "id": 70, + "bk_scope_type": "biz", + "bk_scope_id": "1", + "account": "Admin", + "alias": "Admin", + "category": 1, + "type": 2, + "db_system_account_id": null, + "os": "Windows", + "description": "An account for windows", + "creator": "admin", + "create_time": 1614659536108, + "last_modify_user": "admin", + "last_modify_time": 1614659536116 + }, + "job_request_id": "4e7acb216087eb96" +} +``` + +### 返回结果参数说明 + +#### response +| 字段 | 类型 | 描述 | +|--------------|-----------|-----------| +| result | bool | 请求成功与否。true:请求成功;false请求失败 | +| code | int | 错误编码。 0表示success,>0表示失败错误 | +| message | string | 请求失败返回的错误信息| +| data | object | 请求返回的数据| +| permission | object | 权限信息| + + +#### data + +| 字段 | 类型 | 描述 | +|-----------------------|-----------|-----------| +| id | long | 账号ID | +| bk_scope_type | string | 资源范围类型。可选值: biz - 业务,biz_set - 业务集 | +| bk_scope_id | string | 资源范围ID, 与bk_scope_type对应, 表示业务ID或者业务集ID | +| account | string | 账号名称 | +| alias | string | 账号别名 | +| category | int | 账号用途(1:系统账号) | +| type | int | 账号类型(1:Linux,2:Windows)| +| db_system_account_id | long | 账号用途为数据库账号时该字段生效,表示数据库账号对应的系统账号ID | +| os | string | 账号用途为系统账号时该字段生效,账号对应的OS | +| description | string | 账号描述 | +| creator | string | 创建人 | +| create_time | long | 创建时间Unix时间戳(ms) | +| last_modify_user | string | 最近一次修改人 | +| last_modify_time | long | 最近一次修改时间Unix时间戳(ms) | diff --git a/docs/apidoc/bk-api-gateway/v3/zh/delete_account.md b/docs/apidoc/bk-api-gateway/v3/zh/delete_account.md new file mode 100644 index 0000000000..d926986b25 --- /dev/null +++ b/docs/apidoc/bk-api-gateway/v3/zh/delete_account.md @@ -0,0 +1,92 @@ +### 功能描述 + +删除账号。 + +### 请求参数 + +{{ bkapi_authorization_description }} + +#### Header参数 + +| 字段 | 类型 | 必选 | 描述 | +|---------------------------|------------|---------|------------| +| X-Bkapi-Authorization | string | 是 | 认证信息。详情参考[调用网关 API](https://github.com/TencentBlueKing/BKDocs/blob/master/ZH/7.0/APIGateway/apigateway/use-api/use-apigw-api.md) | +| Accept | string | 是 | 固定值。application/json| +| Content-Type | string | 是 | 固定值。application/json| + +#### Body参数 + +| 字段 | 类型 | 必选 | 描述 | +|---------------|------------|--------|------------| +| bk_scope_type | string | 是 | 资源范围类型。可选值: biz - 业务,biz_set - 业务集 | +| bk_scope_id | string | 是 | 资源范围ID, 与bk_scope_type对应, 表示业务ID或者业务集ID | +| id | long | 否 | 账号ID | + +### 请求参数示例 + +- DELETE +```json +{ + "bk_scope_type": "biz", + "bk_scope_id": "1", + "id": 70 +} +``` + +### 返回结果示例 + +```json +{ + "code": 0, + "message": null, + "result": true, + "data": { + "id": 70, + "bk_scope_type": "biz", + "bk_scope_id": "1", + "account": "Admin", + "alias": "Admin", + "category": 1, + "type": 2, + "db_system_account_id": null, + "os": "Windows", + "description": "An account for windows", + "creator": "admin", + "create_time": 1614659536108, + "last_modify_user": "admin", + "last_modify_time": 1614659536116 + }, + "job_request_id": "4e7acb216087eb96" +} +``` + +### 返回结果参数说明 + +#### response +| 字段 | 类型 | 描述 | +|--------------|-----------|-----------| +| result | bool | 请求成功与否。true:请求成功;false请求失败 | +| code | int | 错误编码。 0表示success,>0表示失败错误 | +| message | string | 请求失败返回的错误信息| +| data | object | 请求返回的数据| +| permission | object | 权限信息| + + +#### data + +| 字段 | 类型 | 描述 | +|-----------------------|-----------|-----------| +| id | long | 账号ID | +| bk_scope_type | string | 资源范围类型。可选值: biz - 业务,biz_set - 业务集 | +| bk_scope_id | string | 资源范围ID, 与bk_scope_type对应, 表示业务ID或者业务集ID | +| account | string | 账号名称 | +| alias | string | 账号别名 | +| category | int | 账号用途(1:系统账号,2:数据库账号) | +| type | int | 账号类型(1:Linux,2:Windows,9:MySQL,10:Oracle,11:DB2)| +| db_system_account_id | long | 账号用途为数据库账号时该字段生效,表示数据库账号对应的系统账号ID | +| os | string | 账号用途为系统账号时该字段生效,账号对应的OS | +| description | string | 描述 | +| creator | string | 创建人 | +| create_time | long | 创建时间Unix时间戳(ms) | +| last_modify_user | string | 最近一次修改人 | +| last_modify_time | long | 最近一次修改时间Unix时间戳(ms) | diff --git a/docs/apidoc/bk-api-gateway/v3/zh/search_account.md b/docs/apidoc/bk-api-gateway/v3/zh/search_account.md new file mode 100644 index 0000000000..8c0a7cdf9b --- /dev/null +++ b/docs/apidoc/bk-api-gateway/v3/zh/search_account.md @@ -0,0 +1,99 @@ +### 功能描述 + +搜索业务下的执行账号列表(含账号使用权限信息) + +### 请求参数 + +{{ bkapi_authorization_description }} + +#### Header参数 + +| 字段 | 类型 | 必选 | 描述 | +|---------------------------|------------|---------|------------| +| X-Bkapi-Authorization | string | 是 | 认证信息。详情参考[调用网关 API](https://github.com/TencentBlueKing/BKDocs/blob/master/ZH/7.0/APIGateway/apigateway/use-api/use-apigw-api.md) | +| Accept | string | 是 | 固定值。application/json| +| Content-Type | string | 是 | 固定值。application/json| + +#### Query参数 + +| 字段 | 类型 | 必选 | 描述 | +|---------------|------------|--------|------------| +| bk_scope_type | string | 是 | 资源范围类型。可选值: biz - 业务,biz_set - 业务集 | +| bk_scope_id | string | 是 | 资源范围ID, 与bk_scope_type对应, 表示业务ID或者业务集ID | +| category | int | 否 | 账号用途(1:系统账号,2:数据库账号),不传则不区分 | +| account | string | 否 | 账号名称,精确搜索 | +| alias | string | 否 | 账号别名,精确搜索 | +| start | int | 否 | 分页记录起始位置,不传默认为0 | +| length | int | 否 | 单次返回最大记录数,最大1000,不传默认为20 | + +### 请求参数示例 + +- GET +```json +/api/v3/search_account?bk_scope_type=biz&bk_scope_id=1&category=1&account=root&start=0&length=1 +``` + +### 返回结果示例 + +```json +{ + "code": 0, + "message": null, + "result": true, + "data": { + "start": 0, + "total": 12, + "data": [ + { + "id": 70, + "bk_scope_type": "biz", + "bk_scope_id": "1", + "account": "root", + "alias": "root", + "category": 1, + "type": 1, + "db_system_account_id": null, + "os": "Linux", + "can_use": true, + "creator": "admin", + "create_time": 1614659536108, + "last_modify_user": "admin", + "last_modify_time": 1614659536116 + } + ], + "length": 1 + }, + "job_request_id": "4e7acb216087eb96" +} +``` + +### 返回结果参数说明 + +#### response +| 字段 | 类型 | 描述 | +|--------------|-----------|-----------| +| result | bool | 请求成功与否。true:请求成功;false请求失败 | +| code | int | 错误编码。 0表示success,>0表示失败错误 | +| message | string | 请求失败返回的错误信息| +| data | object | 请求返回的数据| +| permission | object | 权限信息| + + +#### data.data + +| 字段 | 类型 | 描述 | +|-----------------------|-----------|-----------| +| id | long | 账号ID | +| bk_scope_type | string | 资源范围类型。可选值: biz - 业务,biz_set - 业务集 | +| bk_scope_id | string | 资源范围ID, 与bk_scope_type对应, 表示业务ID或者业务集ID | +| account | string | 账号名称 | +| alias | string | 账号别名 | +| category | int | 账号用途(1:系统账号,2:数据库账号) | +| type | int | 账号类型(1:Linux,2:Windows,9:MySQL,10:Oracle,11:DB2)| +| db_system_account_id | long | 账号用途为数据库账号时该字段生效,表示数据库账号对应的系统账号ID | +| os | string | 账号用途为系统账号时该字段生效,账号对应的OS | +| can_use | bool | 是否有使用该账号的权限 | +| creator | string | 创建人 | +| create_time | long | 创建时间Unix时间戳(ms) | +| last_modify_user | string | 最近一次修改人 | +| last_modify_time | long | 最近一次修改时间Unix时间戳(ms) | diff --git a/docs/apidoc/esb/jobv3-confapis/apidocs/zh_hans/create_account.md b/docs/apidoc/esb/jobv3-confapis/apidocs/zh_hans/create_account.md new file mode 100644 index 0000000000..f7bd369f3f --- /dev/null +++ b/docs/apidoc/esb/jobv3-confapis/apidocs/zh_hans/create_account.md @@ -0,0 +1,96 @@ +### 功能描述 + +创建账号(当前仅支持系统账号) + +### 请求参数 + +{{ common_args_desc }} + +#### 接口参数 + +| 字段 | 类型 | 必选 | 描述 | +|---------------|------------|--------|------------| +| bk_scope_type | string | 是 | 资源范围类型。可选值: biz - 业务,biz_set - 业务集 | +| bk_scope_id | string | 是 | 资源范围ID,与bk_scope_type对应,表示业务ID或者业务集ID | +| account | string | 是 | 账号名称 | +| type | int | 是 | 账号类型(1:Linux,2:Windows)| +| category | int | 是 | 账号用途(1:系统账号)| +| password | string | 否 | 系统账号密码,账号用途为系统账号且账号类型为Windows时必传 | +| alias | string | 否 | 别名,不传则以账号名称作为别名 | +| description | string | 否 | 描述 | + +### 请求参数示例 + +```json +{ + "bk_app_code": "esb_test", + "bk_app_secret": "xxx", + "bk_token": "xxx", + "bk_scope_type": "biz", + "bk_scope_id": "1", + "account": "Admin", + "type": 2, + "category": 1, + "password": "AdminPassword", + "alias": "Admin", + "description": "An account for windows" +} +``` + +### 返回结果示例 + +```json +{ + "code": 0, + "message": null, + "result": true, + "data": { + "id": 70, + "bk_scope_type": "biz", + "bk_scope_id": "1", + "account": "Admin", + "alias": "Admin", + "category": 1, + "type": 2, + "db_system_account_id": null, + "os": "Windows", + "description": "An account for windows", + "creator": "admin", + "create_time": 1614659536108, + "last_modify_user": "admin", + "last_modify_time": 1614659536116 + }, + "job_request_id": "4e7acb216087eb96" +} +``` + +### 返回结果参数说明 + +#### response +| 字段 | 类型 | 描述 | +|--------------|-----------|-----------| +| result | bool | 请求成功与否。true:请求成功;false请求失败 | +| code | int | 错误编码。 0表示success,>0表示失败错误 | +| message | string | 请求失败返回的错误信息| +| data | object | 请求返回的数据| +| permission | object | 权限信息| + + +#### data + +| 字段 | 类型 | 描述 | +|-----------------------|-----------|-----------| +| id | long | 账号ID | +| bk_scope_type | string | 资源范围类型。可选值: biz - 业务,biz_set - 业务集 | +| bk_scope_id | string | 资源范围ID, 与bk_scope_type对应, 表示业务ID或者业务集ID | +| account | string | 账号名称 | +| alias | string | 账号别名 | +| category | int | 账号用途(1:系统账号) | +| type | int | 账号类型(1:Linux,2:Windows)| +| db_system_account_id | long | 账号用途为数据库账号时该字段生效,表示数据库账号对应的系统账号ID | +| os | string | 账号用途为系统账号时该字段生效,账号对应的OS | +| description | string | 账号描述 | +| creator | string | 创建人 | +| create_time | long | 创建时间Unix时间戳(ms) | +| last_modify_user | string | 最近一次修改人 | +| last_modify_time | long | 最近一次修改时间Unix时间戳(ms) | diff --git a/docs/apidoc/esb/jobv3-confapis/apidocs/zh_hans/delete_account.md b/docs/apidoc/esb/jobv3-confapis/apidocs/zh_hans/delete_account.md new file mode 100644 index 0000000000..6db8d984ed --- /dev/null +++ b/docs/apidoc/esb/jobv3-confapis/apidocs/zh_hans/delete_account.md @@ -0,0 +1,86 @@ +### 功能描述 + +删除账号。 + +### 请求参数 + +{{ common_args_desc }} + +#### 接口参数 + +| 字段 | 类型 | 必选 | 描述 | +|---------------|------------|--------|------------| +| bk_scope_type | string | 是 | 资源范围类型。可选值: biz - 业务,biz_set - 业务集 | +| bk_scope_id | string | 是 | 资源范围ID, 与bk_scope_type对应, 表示业务ID或者业务集ID | +| id | long | 否 | 账号ID | + +### 请求参数示例 + +```json +{ + "bk_app_code": "esb_test", + "bk_app_secret": "xxx", + "bk_token": "xxx", + "bk_scope_type": "biz", + "bk_scope_id": "1", + "id": 70 +} +``` + +### 返回结果示例 + +```json +{ + "code": 0, + "message": null, + "result": true, + "data": { + "id": 70, + "bk_scope_type": "biz", + "bk_scope_id": "1", + "account": "Admin", + "alias": "Admin", + "category": 1, + "type": 2, + "db_system_account_id": null, + "os": "Windows", + "description": "An account for windows", + "creator": "admin", + "create_time": 1614659536108, + "last_modify_user": "admin", + "last_modify_time": 1614659536116 + }, + "job_request_id": "4e7acb216087eb96" +} +``` + +### 返回结果参数说明 + +#### response +| 字段 | 类型 | 描述 | +|--------------|-----------|-----------| +| result | bool | 请求成功与否。true:请求成功;false请求失败 | +| code | int | 错误编码。 0表示success,>0表示失败错误 | +| message | string | 请求失败返回的错误信息| +| data | object | 请求返回的数据| +| permission | object | 权限信息| + + +#### data + +| 字段 | 类型 | 描述 | +|-----------------------|-----------|-----------| +| id | long | 账号ID | +| bk_scope_type | string | 资源范围类型。可选值: biz - 业务,biz_set - 业务集 | +| bk_scope_id | string | 资源范围ID, 与bk_scope_type对应, 表示业务ID或者业务集ID | +| account | string | 账号名称 | +| alias | string | 账号别名 | +| category | int | 账号用途(1:系统账号,2:数据库账号) | +| type | int | 账号类型(1:Linux,2:Windows,9:MySQL,10:Oracle,11:DB2)| +| db_system_account_id | long | 账号用途为数据库账号时该字段生效,表示数据库账号对应的系统账号ID | +| os | string | 账号用途为系统账号时该字段生效,账号对应的OS | +| description | string | 描述 | +| creator | string | 创建人 | +| create_time | long | 创建时间Unix时间戳(ms) | +| last_modify_user | string | 最近一次修改人 | +| last_modify_time | long | 最近一次修改时间Unix时间戳(ms) | diff --git a/docs/apidoc/esb/jobv3-confapis/apidocs/zh_hans/search_account.md b/docs/apidoc/esb/jobv3-confapis/apidocs/zh_hans/search_account.md new file mode 100644 index 0000000000..f983bc5e14 --- /dev/null +++ b/docs/apidoc/esb/jobv3-confapis/apidocs/zh_hans/search_account.md @@ -0,0 +1,100 @@ +### 功能描述 + +搜索业务下的执行账号列表(含账号使用权限信息) + +### 请求参数 + +{{ common_args_desc }} + +#### 接口参数 + +| 字段 | 类型 | 必选 | 描述 | +|---------------|------------|--------|------------| +| bk_scope_type | string | 是 | 资源范围类型。可选值: biz - 业务,biz_set - 业务集 | +| bk_scope_id | string | 是 | 资源范围ID, 与bk_scope_type对应, 表示业务ID或者业务集ID | +| category | int | 否 | 账号用途(1:系统账号,2:数据库账号),不传则不区分 | +| account | string | 否 | 账号名称,精确搜索 | +| alias | string | 否 | 账号别名,精确搜索 | +| start | int | 否 | 分页记录起始位置,不传默认为0 | +| length | int | 否 | 单次返回最大记录数,最大1000,不传默认为20 | + +### 请求参数示例 + +```json +{ + "bk_app_code": "esb_test", + "bk_app_secret": "xxx", + "bk_token": "xxx", + "bk_scope_type": "biz", + "bk_scope_id": "1", + "category": 1, + "account": "root", + "start": 0, + "length": 1 +} +``` + +### 返回结果示例 + +```json +{ + "code": 0, + "message": null, + "result": true, + "data": { + "start": 0, + "total": 12, + "data": [ + { + "id": 70, + "bk_scope_type": "biz", + "bk_scope_id": "1", + "account": "root", + "alias": "root", + "category": 1, + "type": 1, + "db_system_account_id": null, + "os": "Linux", + "can_use": true, + "creator": "admin", + "create_time": 1614659536108, + "last_modify_user": "admin", + "last_modify_time": 1614659536116 + } + ], + "length": 1 + }, + "job_request_id": "4e7acb216087eb96" +} +``` + +### 返回结果参数说明 + +#### response +| 字段 | 类型 | 描述 | +|--------------|-----------|-----------| +| result | bool | 请求成功与否。true:请求成功;false请求失败 | +| code | int | 错误编码。 0表示success,>0表示失败错误 | +| message | string | 请求失败返回的错误信息| +| data | object | 请求返回的数据| +| permission | object | 权限信息| + + +#### data.data + +| 字段 | 类型 | 描述 | +|-----------------------|-----------|-----------| +| id | long | 账号ID | +| bk_scope_type | string | 资源范围类型。可选值: biz - 业务,biz_set - 业务集 | +| bk_scope_id | string | 资源范围ID, 与bk_scope_type对应, 表示业务ID或者业务集ID | +| account | string | 账号名称 | +| alias | string | 账号别名 | +| category | int | 账号用途(1:系统账号,2:数据库账号) | +| type | int | 账号类型(1:Linux,2:Windows,9:MySQL,10:Oracle,11:DB2)| +| db_system_account_id | long | 账号用途为数据库账号时该字段生效,表示数据库账号对应的系统账号ID | +| os | string | 账号用途为系统账号时该字段生效,账号对应的OS | +| can_use | bool | 是否有使用该账号的权限 | +| creator | string | 创建人 | +| create_time | long | 创建时间Unix时间戳(ms) | +| last_modify_user | string | 最近一次修改人 | +| last_modify_time | long | 最近一次修改时间Unix时间戳(ms) | diff --git a/docs/apidoc/esb/jobv3-confapis/job.yaml b/docs/apidoc/esb/jobv3-confapis/job.yaml index 426b43b619..21ce56357d 100644 --- a/docs/apidoc/esb/jobv3-confapis/job.yaml +++ b/docs/apidoc/esb/jobv3-confapis/job.yaml @@ -495,4 +495,37 @@ comp_codename: generic.v2.jobv3.job_component dest_path: /api/job/v3/job-manage/delete_script/ dest_http_method: POST - + + +- path: /v2/jobv3/search_account/ + name: search_account + label: 搜索账号 + label_en: Search account + suggest_method: GET + api_type: query + comp_codename: generic.v2.jobv3.job_component + dest_path: /api/job/v3/job-manage/search_account/ + dest_http_method: GET + + +- path: /v2/jobv3/create_account/ + name: create_account + label: 创建账号 + label_en: Create account + suggest_method: POST + api_type: operate + comp_codename: generic.v2.jobv3.job_component + dest_path: /api/job/v3/job-manage/create_account/ + dest_http_method: POST + + +- path: /v2/jobv3/delete_account/ + name: delete_account + label: 删除账号 + label_en: Delete account + suggest_method: POST + api_type: operate + comp_codename: generic.v2.jobv3.job_component + dest_path: /api/job/v3/job-manage/delete_account/ + dest_http_method: POST + From e5b0a5e639598cbed7a75455b0cc2a98e63df7e3 Mon Sep 17 00:00:00 2001 From: jsonwan Date: Tue, 10 Oct 2023 21:45:29 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=E6=8F=90=E4=BE=9B=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7=E6=9F=A5=E8=AF=A2=E3=80=81=E5=88=9B=E5=BB=BA=E3=80=81?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E7=9A=84APIGW=E6=8E=A5=E5=8F=A3=20#2472?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 接口实现 --- .../bk-api-gateway/v3/zh/delete_account.md | 8 +- .../bk-api-gateway/v3/zh/get_account_list.md | 2 + .../validation/ValidationMessages.properties | 7 + .../ValidationMessages_en.properties | 7 + .../ValidationMessages_en_US.properties | 7 + .../ValidationMessages_zh.properties | 7 + .../ValidationMessages_zh_CN.properties | 7 + .../api/esb/v3/EsbAccountV3Resource.java | 38 +++++ .../esb/v3/request/EsbCreateAccountV3Req.java | 80 +++++++++ .../esb/v3/request/EsbDeleteAccountV3Req.java | 43 +++++ .../esb/v3/response/EsbAccountV3DTO.java | 6 + .../esb/impl/v3/EsbAccountResourceV3Impl.java | 152 ++++++++++++++++-- .../tencent/bk/job/manage/dao/AccountDAO.java | 11 ++ .../job/manage/dao/impl/AccountDAOImpl.java | 31 ++++ .../manage/model/dto/AccountSearchDTO.java | 51 ++++++ .../bk/job/manage/service/AccountService.java | 11 ++ .../service/impl/AccountServiceImpl.java | 7 + 17 files changed, 455 insertions(+), 20 deletions(-) create mode 100644 src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/request/EsbCreateAccountV3Req.java create mode 100644 src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/request/EsbDeleteAccountV3Req.java create mode 100644 src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/model/dto/AccountSearchDTO.java diff --git a/docs/apidoc/bk-api-gateway/v3/zh/delete_account.md b/docs/apidoc/bk-api-gateway/v3/zh/delete_account.md index d926986b25..fe38eb940e 100644 --- a/docs/apidoc/bk-api-gateway/v3/zh/delete_account.md +++ b/docs/apidoc/bk-api-gateway/v3/zh/delete_account.md @@ -14,7 +14,7 @@ | Accept | string | 是 | 固定值。application/json| | Content-Type | string | 是 | 固定值。application/json| -#### Body参数 +#### Query参数 | 字段 | 类型 | 必选 | 描述 | |---------------|------------|--------|------------| @@ -26,11 +26,7 @@ - DELETE ```json -{ - "bk_scope_type": "biz", - "bk_scope_id": "1", - "id": 70 -} +/api/v3/delete_account?bk_scope_type=biz&bk_scope_id=1&id=70 ``` ### 返回结果示例 diff --git a/docs/apidoc/bk-api-gateway/v3/zh/get_account_list.md b/docs/apidoc/bk-api-gateway/v3/zh/get_account_list.md index aa4d0bd528..20ea5acdf2 100644 --- a/docs/apidoc/bk-api-gateway/v3/zh/get_account_list.md +++ b/docs/apidoc/bk-api-gateway/v3/zh/get_account_list.md @@ -50,6 +50,7 @@ "category": 1, "type": 1, "os": "Linux", + "can_use": true, "creator": "admin", "bk_scope_type": "biz", "bk_scope_id": "1", @@ -94,6 +95,7 @@ | type | int | 账号类型(1:Linux,2:Windows,9:MySQL,10:Oracle,11:DB2)| | db_system_account_id | long | 账号用途为DB账号时该字段生效,表示DB账号对应的系统账号ID | | os | string | 账号用途为系统账号时该字段生效,账号对应的OS | +| can_use | bool | 是否有使用该账号的权限 | | creator | string | 创建人 | | create_time | long | 创建时间Unix时间戳(ms) | | last_modify_user | string | 最近一次修改人 | diff --git a/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages.properties b/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages.properties index 79e1128427..4450fb72f7 100644 --- a/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages.properties +++ b/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages.properties @@ -62,3 +62,10 @@ validation.constraints.InvalidFileUploadSettingAmount.message=文件大小只能 validation.constraints.InvalidPort.message=端口号只能为1-65535之间的整数 validation.constraints.NotContainSpecialChar.message=不可包含 \\|/:*<>"? 特殊字符 validation.constraints.NotBlankField.message=不能为空 +validation.constraints.AccountId_empty.message=账号ID不能为空 +validation.constraints.AccountName_empty.message=账号名称[account]不能为空 +validation.constraints.AccountType_empty.message=账号类型[type]不能为空 +validation.constraints.AccountCategory_empty.message=账号用途[category]不能为空 +validation.constraints.AccountPassword_tooLong.message=账号密码[password]不能超过255字符 +validation.constraints.AccountAlias_tooLong.message=账号别名[alias]不能超过255字符 +validation.constraints.AccountDescription_tooLong.message=账号描述[description]不能超过1024字符 diff --git a/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_en.properties b/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_en.properties index 91cabc329c..25eac98244 100644 --- a/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_en.properties +++ b/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_en.properties @@ -61,3 +61,10 @@ validation.constraints.EmptyDynamicGroupId.message=DynamicGroup ID cannot be emp validation.constraints.InvalidFileUploadSettingAmount.message=File size must be a positive float validation.constraints.InvalidPort.message=Port must be a integer which is between 1 and 65535 validation.constraints.NotContainSpecialChar.message=Cannot contain special char, such as \\|/:*<>"? +validation.constraints.AccountId_empty.message=Account id cannot be empty +validation.constraints.AccountName_empty.message=Account name (account) cannot be empty +validation.constraints.AccountType_empty.message=Account type cannot be empty +validation.constraints.AccountCategory_empty.message=Account category cannot be empty +validation.constraints.AccountPassword_tooLong.message=Account password length cannot be larger than 255 +validation.constraints.AccountAlias_tooLong.message=Account alias length cannot be larger than 255 +validation.constraints.AccountDescription_tooLong.message=Account description length cannot be larger than 1024 diff --git a/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_en_US.properties b/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_en_US.properties index 91cabc329c..25eac98244 100644 --- a/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_en_US.properties +++ b/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_en_US.properties @@ -61,3 +61,10 @@ validation.constraints.EmptyDynamicGroupId.message=DynamicGroup ID cannot be emp validation.constraints.InvalidFileUploadSettingAmount.message=File size must be a positive float validation.constraints.InvalidPort.message=Port must be a integer which is between 1 and 65535 validation.constraints.NotContainSpecialChar.message=Cannot contain special char, such as \\|/:*<>"? +validation.constraints.AccountId_empty.message=Account id cannot be empty +validation.constraints.AccountName_empty.message=Account name (account) cannot be empty +validation.constraints.AccountType_empty.message=Account type cannot be empty +validation.constraints.AccountCategory_empty.message=Account category cannot be empty +validation.constraints.AccountPassword_tooLong.message=Account password length cannot be larger than 255 +validation.constraints.AccountAlias_tooLong.message=Account alias length cannot be larger than 255 +validation.constraints.AccountDescription_tooLong.message=Account description length cannot be larger than 1024 diff --git a/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_zh.properties b/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_zh.properties index bb93596afc..4a816debe1 100644 --- a/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_zh.properties +++ b/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_zh.properties @@ -61,3 +61,10 @@ validation.constraints.EmptyDynamicGroupId.message=动态分组 ID 不可为空 validation.constraints.InvalidFileUploadSettingAmount.message=文件大小只能为大于0的浮点数 validation.constraints.InvalidPort.message=端口号只能为1-65535之间的整数 validation.constraints.NotContainSpecialChar.message=不可包含 \\|/:*<>"? 特殊字符 +validation.constraints.AccountId_empty.message=账号ID不能为空 +validation.constraints.AccountName_empty.message=账号名称[account]不能为空 +validation.constraints.AccountType_empty.message=账号类型[type]不能为空 +validation.constraints.AccountCategory_empty.message=账号用途[category]不能为空 +validation.constraints.AccountPassword_tooLong.message=账号密码[password]不能超过255字符 +validation.constraints.AccountAlias_tooLong.message=账号别名[alias]不能超过255字符 +validation.constraints.AccountDescription_tooLong.message=账号描述[description]不能超过1024字符 diff --git a/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_zh_CN.properties b/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_zh_CN.properties index 085c4306e6..75372f148e 100644 --- a/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_zh_CN.properties +++ b/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_zh_CN.properties @@ -61,3 +61,10 @@ validation.constraints.EmptyDynamicGroupId.message=动态分组ID不可为空 validation.constraints.InvalidFileUploadSettingAmount.message=文件大小只能为大于0的浮点数 validation.constraints.InvalidPort.message=端口号只能为1-65535之间的整数 validation.constraints.NotContainSpecialChar.message=不可包含 \\|/:*<>"? 特殊字符 +validation.constraints.AccountId_empty.message=账号ID不能为空 +validation.constraints.AccountName_empty.message=账号名称[account]不能为空 +validation.constraints.AccountType_empty.message=账号类型[type]不能为空 +validation.constraints.AccountCategory_empty.message=账号用途[category]不能为空 +validation.constraints.AccountPassword_tooLong.message=账号密码[password]不能超过255字符 +validation.constraints.AccountAlias_tooLong.message=账号别名[alias]不能超过255字符 +validation.constraints.AccountDescription_tooLong.message=账号描述[description]不能超过1024字符 diff --git a/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/v3/EsbAccountV3Resource.java b/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/v3/EsbAccountV3Resource.java index f2dc18d1c8..026dd0e6a7 100644 --- a/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/v3/EsbAccountV3Resource.java +++ b/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/v3/EsbAccountV3Resource.java @@ -28,9 +28,12 @@ import com.tencent.bk.job.common.constant.JobCommonHeaders; import com.tencent.bk.job.common.esb.model.EsbResp; import com.tencent.bk.job.common.esb.model.job.v3.EsbPageDataV3; +import com.tencent.bk.job.manage.model.esb.v3.request.EsbCreateAccountV3Req; +import com.tencent.bk.job.manage.model.esb.v3.request.EsbDeleteAccountV3Req; import com.tencent.bk.job.manage.model.esb.v3.request.EsbGetAccountListV3Req; import com.tencent.bk.job.manage.model.esb.v3.response.EsbAccountV3DTO; import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -65,4 +68,39 @@ EsbResp> getAccountList( @RequestParam(value = "start", required = false) Integer start, @RequestParam(value = "length", required = false) Integer length); + @GetMapping("/search_account") + EsbResp> searchAccount( + @RequestHeader(value = JobCommonHeaders.USERNAME) String username, + @RequestHeader(value = JobCommonHeaders.APP_CODE) String appCode, + @RequestParam(value = "bk_scope_type", required = false) String scopeType, + @RequestParam(value = "bk_scope_id", required = false) String scopeId, + @RequestParam(value = "category", required = false) Integer category, + @RequestParam(value = "account", required = false) String account, + @RequestParam(value = "alias", required = false) String alias, + @RequestParam(value = "start", required = false) Integer start, + @RequestParam(value = "length", required = false) Integer length); + + @PostMapping("/create_account") + EsbResp createAccount( + @RequestBody + @Validated + EsbCreateAccountV3Req req + ); + + @DeleteMapping("/delete_account") + EsbResp deleteAccount( + @RequestHeader(value = JobCommonHeaders.USERNAME) String username, + @RequestHeader(value = JobCommonHeaders.APP_CODE) String appCode, + @RequestParam(value = "bk_scope_type", required = false) String scopeType, + @RequestParam(value = "bk_scope_id", required = false) String scopeId, + @RequestParam(value = "id") Long id + ); + + @PostMapping("/delete_account") + EsbResp deleteAccountUsingPost( + @RequestBody + @Validated + EsbDeleteAccountV3Req req + ); + } diff --git a/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/request/EsbCreateAccountV3Req.java b/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/request/EsbCreateAccountV3Req.java new file mode 100644 index 0000000000..7d9456dc64 --- /dev/null +++ b/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/request/EsbCreateAccountV3Req.java @@ -0,0 +1,80 @@ +/* + * Tencent is pleased to support the open source community by making BK-JOB蓝鲸智云作业平台 available. + * + * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved. + * + * BK-JOB蓝鲸智云作业平台 is licensed under the MIT License. + * + * License for BK-JOB蓝鲸智云作业平台: + * -------------------------------------------------------------------- + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and + * to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of + * the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO + * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +package com.tencent.bk.job.manage.model.esb.v3.request; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.tencent.bk.job.common.esb.model.EsbAppScopeReq; +import com.tencent.bk.job.common.util.json.SkipLogFields; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.ToString; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +@Data +@ApiModel("账号创建请求") +@ToString(exclude = {"password"}) +public class EsbCreateAccountV3Req extends EsbAppScopeReq { + + /** + * 帐号名称 + */ + @NotEmpty(message = "{validation.constraints.AccountName_empty.message}") + private String account; + + /** + * 账号类型:1-Linux,2-Windows,9-Mysql,10-Oracle,11-DB2 + */ + @NotNull(message = "{validation.constraints.AccountType_empty.message}") + private Integer type; + + /** + * 账号用途:1-系统账号,2-数据库账号 + */ + @NotNull(message = "{validation.constraints.AccountCategory_empty.message}") + private Integer category; + + /** + * 系统账号的密码(Windows) + */ + @SkipLogFields + @Length(max = 255, message = "{validation.constraints.AccountPassword_tooLong.message}") + private String password; + + /** + * 别名 + */ + @Length(max = 255, message = "{validation.constraints.AccountAlias_tooLong.message}") + private String alias; + + /** + * 描述 + */ + @JsonProperty("description") + @Length(max = 1024, message = "{validation.constraints.AccountDescription_tooLong.message}") + private String remark; +} diff --git a/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/request/EsbDeleteAccountV3Req.java b/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/request/EsbDeleteAccountV3Req.java new file mode 100644 index 0000000000..03b3f9113b --- /dev/null +++ b/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/request/EsbDeleteAccountV3Req.java @@ -0,0 +1,43 @@ +/* + * Tencent is pleased to support the open source community by making BK-JOB蓝鲸智云作业平台 available. + * + * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved. + * + * BK-JOB蓝鲸智云作业平台 is licensed under the MIT License. + * + * License for BK-JOB蓝鲸智云作业平台: + * -------------------------------------------------------------------- + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and + * to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of + * the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO + * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +package com.tencent.bk.job.manage.model.esb.v3.request; + +import com.tencent.bk.job.common.esb.model.EsbAppScopeReq; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +@ApiModel("账号删除请求") +public class EsbDeleteAccountV3Req extends EsbAppScopeReq { + + /** + * 帐号ID + */ + @NotNull(message = "{validation.constraints.AccountId_empty.message}") + private Long id; + +} diff --git a/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/response/EsbAccountV3DTO.java b/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/response/EsbAccountV3DTO.java index 9f96c43fc1..64ce217a70 100644 --- a/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/response/EsbAccountV3DTO.java +++ b/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/response/EsbAccountV3DTO.java @@ -65,4 +65,10 @@ public class EsbAccountV3DTO extends EsbAppScopeDTO { */ @JsonProperty("description") private String description; + + /** + * 是否有权限使用 + */ + @JsonProperty("can_use") + private Boolean canUse; } diff --git a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/impl/v3/EsbAccountResourceV3Impl.java b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/impl/v3/EsbAccountResourceV3Impl.java index 78ec970916..2102d95bb9 100644 --- a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/impl/v3/EsbAccountResourceV3Impl.java +++ b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/impl/v3/EsbAccountResourceV3Impl.java @@ -24,35 +24,51 @@ package com.tencent.bk.job.manage.api.esb.impl.v3; +import com.tencent.bk.job.common.constant.AccountCategoryEnum; import com.tencent.bk.job.common.esb.metrics.EsbApiTimed; import com.tencent.bk.job.common.esb.model.EsbResp; import com.tencent.bk.job.common.esb.model.job.v3.EsbPageDataV3; import com.tencent.bk.job.common.metrics.CommonMetricNames; import com.tencent.bk.job.common.model.BaseSearchCondition; +import com.tencent.bk.job.common.model.PageData; +import com.tencent.bk.job.common.model.dto.AppResourceScope; import com.tencent.bk.job.common.service.AppScopeMappingService; +import com.tencent.bk.job.common.util.date.DateUtils; import com.tencent.bk.job.manage.api.esb.v3.EsbAccountV3Resource; +import com.tencent.bk.job.manage.auth.AccountAuthService; +import com.tencent.bk.job.manage.common.consts.account.AccountTypeEnum; import com.tencent.bk.job.manage.model.dto.AccountDTO; +import com.tencent.bk.job.manage.model.dto.AccountSearchDTO; +import com.tencent.bk.job.manage.model.esb.v3.request.EsbCreateAccountV3Req; +import com.tencent.bk.job.manage.model.esb.v3.request.EsbDeleteAccountV3Req; import com.tencent.bk.job.manage.model.esb.v3.request.EsbGetAccountListV3Req; import com.tencent.bk.job.manage.model.esb.v3.response.EsbAccountV3DTO; import com.tencent.bk.job.manage.service.AccountService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; @RestController @Slf4j public class EsbAccountResourceV3Impl implements EsbAccountV3Resource { private final AccountService accountService; private final AppScopeMappingService appScopeMappingService; + private final AccountAuthService accountAuthService; @Autowired public EsbAccountResourceV3Impl(AccountService accountService, - AppScopeMappingService appScopeMappingService) { + AppScopeMappingService appScopeMappingService, + AccountAuthService accountAuthService) { this.accountService = accountService; this.appScopeMappingService = appScopeMappingService; + this.accountAuthService = accountAuthService; } @Override @@ -60,28 +76,38 @@ public EsbAccountResourceV3Impl(AccountService accountService, public EsbResp> getAccountListUsingPost(EsbGetAccountListV3Req request) { request.fillAppResourceScope(appScopeMappingService); long appId = request.getAppId(); - BaseSearchCondition baseSearchCondition = new BaseSearchCondition(); - int start = 0; - if (request.getStart() != null && request.getStart() > 0) { - start = request.getStart(); - } - baseSearchCondition.setStart(start); - int length = 20; - if (request.getLength() != null && request.getLength() > 0) { - length = request.getLength(); - } - baseSearchCondition.setLength(length); + BaseSearchCondition baseSearchCondition = buildBaseSearchCondition(request.getStart(), request.getLength()); List accountList = accountService.listAllAppAccount(appId, null, baseSearchCondition); List accountV3DTOList = convertToEsbAccountV3DTOList(accountList); Integer accountCount = accountService.countAllAppAccount(appId, null); EsbPageDataV3 esbPageData = new EsbPageDataV3<>(); esbPageData.setTotal(accountCount.longValue()); - esbPageData.setStart(start); - esbPageData.setLength(length); + esbPageData.setStart(baseSearchCondition.getStart()); + esbPageData.setLength(baseSearchCondition.getLength()); + addPermissionForData(request.getUserName(), request.getAppResourceScope(), accountV3DTOList); esbPageData.setData(accountV3DTOList); return EsbResp.buildSuccessResp(esbPageData); } + private BaseSearchCondition buildBaseSearchCondition(Integer rawStart, Integer rawLength) { + BaseSearchCondition baseSearchCondition = new BaseSearchCondition(); + int start = 0; + if (rawStart != null && rawStart > 0) { + start = rawStart; + } + baseSearchCondition.setStart(start); + int length = 20; + if (rawLength != null && rawLength > 0) { + length = rawLength; + } + int maxLength = 1000; + if (length > maxLength) { + length = maxLength; + } + baseSearchCondition.setLength(length); + return baseSearchCondition; + } + private List convertToEsbAccountV3DTOList(List accounts) { List esbAccounts = new ArrayList<>(); if (accounts == null || accounts.isEmpty()) { @@ -114,4 +140,102 @@ public EsbResp> getAccountList(String username, request.setLength(length); return getAccountListUsingPost(request); } + + @Override + public EsbResp> searchAccount(String username, + String appCode, + String scopeType, + String scopeId, + Integer category, + String account, + String alias, + Integer start, + Integer length) { + Long appId = appScopeMappingService.getAppIdByScope(scopeType, scopeId); + BaseSearchCondition baseSearchCondition = buildBaseSearchCondition(start, length); + AccountSearchDTO accountSearchDTO = new AccountSearchDTO(); + accountSearchDTO.setAppId(appId); + accountSearchDTO.setCategory(category); + accountSearchDTO.setAccount(account); + accountSearchDTO.setAlias(alias); + PageData pageData = accountService.accurateSearchPageAccount(accountSearchDTO, baseSearchCondition); + EsbPageDataV3 esbPageData = new EsbPageDataV3<>(); + esbPageData.setTotal(pageData.getTotal()); + esbPageData.setStart(pageData.getStart()); + esbPageData.setLength(pageData.getPageSize()); + List esbAccountV3DTOList = pageData.getData().stream() + .map(AccountDTO::toEsbAccountV3DTO).collect(Collectors.toList()); + addPermissionForData(username, new AppResourceScope(scopeType, scopeId, appId), esbAccountV3DTOList); + esbPageData.setData(esbAccountV3DTOList); + return EsbResp.buildSuccessResp(esbPageData); + } + + private void addPermissionForData(String username, + AppResourceScope appResourceScope, + List esbAccountV3DTOList) { + List accountIdList = esbAccountV3DTOList.stream() + .map(EsbAccountV3DTO::getId).collect(Collectors.toList()); + List canUseIdList = accountAuthService.batchAuthUseAccount(username, appResourceScope, accountIdList); + Set canUseIds = new HashSet<>(canUseIdList); + esbAccountV3DTOList.forEach(esbAccountV3DTO -> { + esbAccountV3DTO.setCanUse(canUseIds.contains(esbAccountV3DTO.getId())); + }); + } + + @Override + public EsbResp createAccount(EsbCreateAccountV3Req req) { + req.fillAppResourceScope(appScopeMappingService); + AccountDTO accountDTO = buildCreateAccountDTO(req.getUserName(), req.getAppId(), req); + AccountDTO createdAccountDTO = accountService.createAccount(req.getUserName(), accountDTO); + return EsbResp.buildSuccessResp(createdAccountDTO.toEsbAccountV3DTO()); + } + + @SuppressWarnings("DuplicatedCode") + public AccountDTO buildCreateAccountDTO(String operator, long appId, EsbCreateAccountV3Req req) { + AccountDTO accountDTO = new AccountDTO(); + accountDTO.setAppId(appId); + accountDTO.setAccount(req.getAccount()); + accountDTO.setCategory(AccountCategoryEnum.valOf(req.getCategory())); + accountDTO.setType(AccountTypeEnum.valueOf(req.getType())); + if (StringUtils.isBlank(req.getAlias())) { + accountDTO.setAlias(req.getAccount()); + } else { + accountDTO.setAlias(req.getAlias()); + } + accountDTO.setRemark(req.getRemark()); + + if (AccountCategoryEnum.SYSTEM.getValue().equals(req.getCategory())) { + if (AccountTypeEnum.WINDOW.getType().equals(req.getType())) { + accountDTO.setOs("Windows"); + } else { + accountDTO.setOs("Linux"); + } + accountDTO.setPassword(req.getPassword()); + } + + accountDTO.setCreator(operator); + accountDTO.setCreateTime(DateUtils.currentTimeMillis()); + accountDTO.setLastModifyUser(operator); + accountDTO.setLastModifyTime(DateUtils.currentTimeMillis()); + + return accountDTO; + } + + @Override + public EsbResp deleteAccount(String username, + String appCode, + String scopeType, + String scopeId, + Long id) { + Long appId = appScopeMappingService.getAppIdByScope(scopeType, scopeId); + AccountDTO accountDTO = accountService.getAccount(appId, id); + accountService.deleteAccount(username, appId, id); + return EsbResp.buildSuccessResp(accountDTO.toEsbAccountV3DTO()); + } + + @Override + public EsbResp deleteAccountUsingPost(EsbDeleteAccountV3Req req) { + req.fillAppResourceScope(appScopeMappingService); + return deleteAccount(req.getUserName(), req.getAppCode(), req.getScopeType(), req.getScopeId(), req.getId()); + } } diff --git a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/dao/AccountDAO.java b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/dao/AccountDAO.java index 996a0b07dc..92cf82628e 100644 --- a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/dao/AccountDAO.java +++ b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/dao/AccountDAO.java @@ -30,6 +30,7 @@ import com.tencent.bk.job.manage.common.consts.account.AccountTypeEnum; import com.tencent.bk.job.manage.model.dto.AccountDTO; import com.tencent.bk.job.manage.model.dto.AccountDisplayDTO; +import com.tencent.bk.job.manage.model.dto.AccountSearchDTO; import java.util.Collection; import java.util.List; @@ -102,6 +103,16 @@ public interface AccountDAO { */ PageData listPageAccount(AccountDTO accountQuery, BaseSearchCondition baseSearchCondition); + /** + * 分页精确搜索账号列表 + * + * @param accountSearchDTO 账号搜索条件 + * @param baseSearchCondition 基础查询条件 + * @return 账号分页 + */ + PageData accurateSearchPageAccount(AccountSearchDTO accountSearchDTO, + BaseSearchCondition baseSearchCondition); + /** * 分页搜索账号列表 * diff --git a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/dao/impl/AccountDAOImpl.java b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/dao/impl/AccountDAOImpl.java index 143b998297..9907366a66 100644 --- a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/dao/impl/AccountDAOImpl.java +++ b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/dao/impl/AccountDAOImpl.java @@ -34,6 +34,7 @@ import com.tencent.bk.job.manage.dao.AccountDAO; import com.tencent.bk.job.manage.model.dto.AccountDTO; import com.tencent.bk.job.manage.model.dto.AccountDisplayDTO; +import com.tencent.bk.job.manage.model.dto.AccountSearchDTO; import com.tencent.bk.job.manage.model.tables.Account; import com.tencent.bk.job.manage.model.tables.TaskTemplate; import com.tencent.bk.job.manage.model.tables.TaskTemplateStep; @@ -343,6 +344,32 @@ public PageData listPageAccount(AccountDTO accountQuery, return listPageAccountByConditions(baseSearchCondition, conditions, count); } + @Override + public PageData accurateSearchPageAccount(AccountSearchDTO accountSearchDTO, + BaseSearchCondition baseSearchCondition) { + List conditions = buildConditions(accountSearchDTO); + long count = countAccountByConditions(conditions); + return listPageAccountByConditions(baseSearchCondition, conditions, count); + } + + private List buildConditions(AccountSearchDTO accountSearchDTO) { + List conditions = new ArrayList<>(); + conditions.add(TB_ACCOUNT.IS_DELETED.eq(UByte.valueOf(0))); + if (accountSearchDTO.getAppId() != null) { + conditions.add(TB_ACCOUNT.APP_ID.eq(accountSearchDTO.getAppId())); + } + if (accountSearchDTO.getCategory() != null) { + conditions.add(TB_ACCOUNT.CATEGORY.eq(JooqDataTypeUtil.getByteFromInteger(accountSearchDTO.getCategory()))); + } + if (StringUtils.isNotBlank(accountSearchDTO.getAccount())) { + conditions.add(TB_ACCOUNT.ACCOUNT_.eq(accountSearchDTO.getAccount())); + } + if (StringUtils.isNotBlank(accountSearchDTO.getAlias())) { + conditions.add(TB_ACCOUNT.ALIAS.eq(accountSearchDTO.getAlias())); + } + return conditions; + } + public PageData listPageAccountByConditions(BaseSearchCondition baseSearchCondition, List conditions, long count) { @@ -414,6 +441,10 @@ private long getPageAccountCount(Long appId, String keyword, BaseSearchCondition */ private long getPageAccountCount(AccountDTO accountQuery, BaseSearchCondition baseSearchCondition) { List conditions = buildConditionList(accountQuery, baseSearchCondition); + return countAccountByConditions(conditions); + } + + private long countAccountByConditions(List conditions) { Long count = ctx.selectCount().from(TB_ACCOUNT).where(conditions).fetchOne(0, Long.class); assert count != null; return count; diff --git a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/model/dto/AccountSearchDTO.java b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/model/dto/AccountSearchDTO.java new file mode 100644 index 0000000000..9024d245a1 --- /dev/null +++ b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/model/dto/AccountSearchDTO.java @@ -0,0 +1,51 @@ +/* + * Tencent is pleased to support the open source community by making BK-JOB蓝鲸智云作业平台 available. + * + * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved. + * + * BK-JOB蓝鲸智云作业平台 is licensed under the MIT License. + * + * License for BK-JOB蓝鲸智云作业平台: + * -------------------------------------------------------------------- + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and + * to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of + * the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO + * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +package com.tencent.bk.job.manage.model.dto; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class AccountSearchDTO { + + /** + * 业务ID + */ + private Long appId; + /** + * 账号用途 + */ + private Integer category; + /** + * 账号名称 + */ + private String account; + /** + * 账号别名 + */ + private String alias; + +} diff --git a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/service/AccountService.java b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/service/AccountService.java index 2876145fdc..da177c1937 100644 --- a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/service/AccountService.java +++ b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/service/AccountService.java @@ -30,6 +30,7 @@ import com.tencent.bk.job.manage.common.consts.account.AccountTypeEnum; import com.tencent.bk.job.manage.model.dto.AccountDTO; import com.tencent.bk.job.manage.model.dto.AccountDisplayDTO; +import com.tencent.bk.job.manage.model.dto.AccountSearchDTO; import com.tencent.bk.job.manage.model.web.request.AccountCreateUpdateReq; import java.util.Collection; @@ -127,6 +128,16 @@ public interface AccountService { */ PageData listPageAccount(AccountDTO accountQuery, BaseSearchCondition baseSearchCondition); + /** + * 分页精确搜索账号列表 + * + * @param accountSearchDTO 账号搜索条件 + * @param baseSearchCondition 基础查询条件 + * @return 账号分页 + */ + PageData accurateSearchPageAccount(AccountSearchDTO accountSearchDTO, + BaseSearchCondition baseSearchCondition); + /** * 分页搜索账号列表 * diff --git a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/service/impl/AccountServiceImpl.java b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/service/impl/AccountServiceImpl.java index 46fa60f805..68ff134957 100644 --- a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/service/impl/AccountServiceImpl.java +++ b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/service/impl/AccountServiceImpl.java @@ -57,6 +57,7 @@ import com.tencent.bk.job.manage.dao.AccountDAO; import com.tencent.bk.job.manage.model.dto.AccountDTO; import com.tencent.bk.job.manage.model.dto.AccountDisplayDTO; +import com.tencent.bk.job.manage.model.dto.AccountSearchDTO; import com.tencent.bk.job.manage.model.web.request.AccountCreateUpdateReq; import com.tencent.bk.job.manage.model.web.request.globalsetting.AccountNameRule; import com.tencent.bk.job.manage.service.AccountService; @@ -313,6 +314,12 @@ public PageData listPageAccount(AccountDTO accountQuery, BaseSearchC return accountDAO.listPageAccount(accountQuery, baseSearchCondition); } + @Override + public PageData accurateSearchPageAccount(AccountSearchDTO accountSearchDTO, + BaseSearchCondition baseSearchCondition) { + return accountDAO.accurateSearchPageAccount(accountSearchDTO, baseSearchCondition); + } + @Override public PageData searchPageAccount(Long appId, String keyword, BaseSearchCondition baseSearchCondition) throws ServiceException { From f62e4d38206304fbe80eeffd4fca453a403dbe59 Mon Sep 17 00:00:00 2001 From: jsonwan Date: Thu, 12 Oct 2023 15:49:53 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20=E6=8F=90=E4=BE=9B=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7=E6=9F=A5=E8=AF=A2=E3=80=81=E5=88=9B=E5=BB=BA=E3=80=81?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E7=9A=84APIGW=E6=8E=A5=E5=8F=A3=20#2472?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 处理Review意见 --- .../bk-api-gateway/v3/zh/create_account.md | 2 - .../bk-api-gateway/v3/zh/get_account_list.md | 2 - .../bk-api-gateway/v3/zh/search_account.md | 99 ----------------- .../apidocs/zh_hans/create_account.md | 2 - .../apidocs/zh_hans/search_account.md | 100 ------------------ docs/apidoc/esb/jobv3-confapis/job.yaml | 11 -- .../validation/ValidationMessages.properties | 12 +-- .../ValidationMessages_en.properties | 6 +- .../ValidationMessages_en_US.properties | 6 +- .../ValidationMessages_zh.properties | 12 +-- .../ValidationMessages_zh_CN.properties | 12 +-- .../common/constant/AccountCategoryEnum.java | 7 ++ .../api/esb/v3/EsbAccountV3Resource.java | 27 +++-- .../consts/account/AccountTypeEnum.java | 7 ++ .../esb/v3/request/EsbCreateAccountV3Req.java | 10 +- .../v3/request/EsbGetAccountListV3Req.java | 14 +++ .../esb/v3/response/EsbAccountV3DTO.java | 6 -- .../dao/AccountDAOImplIntegrationTest.java | 8 +- .../impl/EsbGetDBAccountListResourceImpl.java | 2 +- .../esb/impl/EsbGetOSAccountResourceImpl.java | 2 +- .../esb/impl/v3/EsbAccountResourceV3Impl.java | 84 +++++---------- .../impl/ServiceAccountResourceImpl.java | 2 +- .../web/impl/WebAppAccountResourceImpl.java | 2 +- .../tencent/bk/job/manage/dao/AccountDAO.java | 22 ++-- .../job/manage/dao/impl/AccountDAOImpl.java | 56 +++------- .../bk/job/manage/service/AccountService.java | 22 ++-- .../service/impl/AccountServiceImpl.java | 24 ++--- 27 files changed, 150 insertions(+), 409 deletions(-) delete mode 100644 docs/apidoc/bk-api-gateway/v3/zh/search_account.md delete mode 100644 docs/apidoc/esb/jobv3-confapis/apidocs/zh_hans/search_account.md diff --git a/docs/apidoc/bk-api-gateway/v3/zh/create_account.md b/docs/apidoc/bk-api-gateway/v3/zh/create_account.md index 675eaf85b6..5919968d41 100644 --- a/docs/apidoc/bk-api-gateway/v3/zh/create_account.md +++ b/docs/apidoc/bk-api-gateway/v3/zh/create_account.md @@ -58,7 +58,6 @@ "alias": "Admin", "category": 1, "type": 2, - "db_system_account_id": null, "os": "Windows", "description": "An account for windows", "creator": "admin", @@ -93,7 +92,6 @@ | alias | string | 账号别名 | | category | int | 账号用途(1:系统账号) | | type | int | 账号类型(1:Linux,2:Windows)| -| db_system_account_id | long | 账号用途为数据库账号时该字段生效,表示数据库账号对应的系统账号ID | | os | string | 账号用途为系统账号时该字段生效,账号对应的OS | | description | string | 账号描述 | | creator | string | 创建人 | diff --git a/docs/apidoc/bk-api-gateway/v3/zh/get_account_list.md b/docs/apidoc/bk-api-gateway/v3/zh/get_account_list.md index 20ea5acdf2..aa4d0bd528 100644 --- a/docs/apidoc/bk-api-gateway/v3/zh/get_account_list.md +++ b/docs/apidoc/bk-api-gateway/v3/zh/get_account_list.md @@ -50,7 +50,6 @@ "category": 1, "type": 1, "os": "Linux", - "can_use": true, "creator": "admin", "bk_scope_type": "biz", "bk_scope_id": "1", @@ -95,7 +94,6 @@ | type | int | 账号类型(1:Linux,2:Windows,9:MySQL,10:Oracle,11:DB2)| | db_system_account_id | long | 账号用途为DB账号时该字段生效,表示DB账号对应的系统账号ID | | os | string | 账号用途为系统账号时该字段生效,账号对应的OS | -| can_use | bool | 是否有使用该账号的权限 | | creator | string | 创建人 | | create_time | long | 创建时间Unix时间戳(ms) | | last_modify_user | string | 最近一次修改人 | diff --git a/docs/apidoc/bk-api-gateway/v3/zh/search_account.md b/docs/apidoc/bk-api-gateway/v3/zh/search_account.md deleted file mode 100644 index 8c0a7cdf9b..0000000000 --- a/docs/apidoc/bk-api-gateway/v3/zh/search_account.md +++ /dev/null @@ -1,99 +0,0 @@ -### 功能描述 - -搜索业务下的执行账号列表(含账号使用权限信息) - -### 请求参数 - -{{ bkapi_authorization_description }} - -#### Header参数 - -| 字段 | 类型 | 必选 | 描述 | -|---------------------------|------------|---------|------------| -| X-Bkapi-Authorization | string | 是 | 认证信息。详情参考[调用网关 API](https://github.com/TencentBlueKing/BKDocs/blob/master/ZH/7.0/APIGateway/apigateway/use-api/use-apigw-api.md) | -| Accept | string | 是 | 固定值。application/json| -| Content-Type | string | 是 | 固定值。application/json| - -#### Query参数 - -| 字段 | 类型 | 必选 | 描述 | -|---------------|------------|--------|------------| -| bk_scope_type | string | 是 | 资源范围类型。可选值: biz - 业务,biz_set - 业务集 | -| bk_scope_id | string | 是 | 资源范围ID, 与bk_scope_type对应, 表示业务ID或者业务集ID | -| category | int | 否 | 账号用途(1:系统账号,2:数据库账号),不传则不区分 | -| account | string | 否 | 账号名称,精确搜索 | -| alias | string | 否 | 账号别名,精确搜索 | -| start | int | 否 | 分页记录起始位置,不传默认为0 | -| length | int | 否 | 单次返回最大记录数,最大1000,不传默认为20 | - -### 请求参数示例 - -- GET -```json -/api/v3/search_account?bk_scope_type=biz&bk_scope_id=1&category=1&account=root&start=0&length=1 -``` - -### 返回结果示例 - -```json -{ - "code": 0, - "message": null, - "result": true, - "data": { - "start": 0, - "total": 12, - "data": [ - { - "id": 70, - "bk_scope_type": "biz", - "bk_scope_id": "1", - "account": "root", - "alias": "root", - "category": 1, - "type": 1, - "db_system_account_id": null, - "os": "Linux", - "can_use": true, - "creator": "admin", - "create_time": 1614659536108, - "last_modify_user": "admin", - "last_modify_time": 1614659536116 - } - ], - "length": 1 - }, - "job_request_id": "4e7acb216087eb96" -} -``` - -### 返回结果参数说明 - -#### response -| 字段 | 类型 | 描述 | -|--------------|-----------|-----------| -| result | bool | 请求成功与否。true:请求成功;false请求失败 | -| code | int | 错误编码。 0表示success,>0表示失败错误 | -| message | string | 请求失败返回的错误信息| -| data | object | 请求返回的数据| -| permission | object | 权限信息| - - -#### data.data - -| 字段 | 类型 | 描述 | -|-----------------------|-----------|-----------| -| id | long | 账号ID | -| bk_scope_type | string | 资源范围类型。可选值: biz - 业务,biz_set - 业务集 | -| bk_scope_id | string | 资源范围ID, 与bk_scope_type对应, 表示业务ID或者业务集ID | -| account | string | 账号名称 | -| alias | string | 账号别名 | -| category | int | 账号用途(1:系统账号,2:数据库账号) | -| type | int | 账号类型(1:Linux,2:Windows,9:MySQL,10:Oracle,11:DB2)| -| db_system_account_id | long | 账号用途为数据库账号时该字段生效,表示数据库账号对应的系统账号ID | -| os | string | 账号用途为系统账号时该字段生效,账号对应的OS | -| can_use | bool | 是否有使用该账号的权限 | -| creator | string | 创建人 | -| create_time | long | 创建时间Unix时间戳(ms) | -| last_modify_user | string | 最近一次修改人 | -| last_modify_time | long | 最近一次修改时间Unix时间戳(ms) | diff --git a/docs/apidoc/esb/jobv3-confapis/apidocs/zh_hans/create_account.md b/docs/apidoc/esb/jobv3-confapis/apidocs/zh_hans/create_account.md index f7bd369f3f..c0858a012d 100644 --- a/docs/apidoc/esb/jobv3-confapis/apidocs/zh_hans/create_account.md +++ b/docs/apidoc/esb/jobv3-confapis/apidocs/zh_hans/create_account.md @@ -52,7 +52,6 @@ "alias": "Admin", "category": 1, "type": 2, - "db_system_account_id": null, "os": "Windows", "description": "An account for windows", "creator": "admin", @@ -87,7 +86,6 @@ | alias | string | 账号别名 | | category | int | 账号用途(1:系统账号) | | type | int | 账号类型(1:Linux,2:Windows)| -| db_system_account_id | long | 账号用途为数据库账号时该字段生效,表示数据库账号对应的系统账号ID | | os | string | 账号用途为系统账号时该字段生效,账号对应的OS | | description | string | 账号描述 | | creator | string | 创建人 | diff --git a/docs/apidoc/esb/jobv3-confapis/apidocs/zh_hans/search_account.md b/docs/apidoc/esb/jobv3-confapis/apidocs/zh_hans/search_account.md deleted file mode 100644 index f983bc5e14..0000000000 --- a/docs/apidoc/esb/jobv3-confapis/apidocs/zh_hans/search_account.md +++ /dev/null @@ -1,100 +0,0 @@ -### 功能描述 - -搜索业务下的执行账号列表(含账号使用权限信息) - -### 请求参数 - -{{ common_args_desc }} - -#### 接口参数 - -| 字段 | 类型 | 必选 | 描述 | -|---------------|------------|--------|------------| -| bk_scope_type | string | 是 | 资源范围类型。可选值: biz - 业务,biz_set - 业务集 | -| bk_scope_id | string | 是 | 资源范围ID, 与bk_scope_type对应, 表示业务ID或者业务集ID | -| category | int | 否 | 账号用途(1:系统账号,2:数据库账号),不传则不区分 | -| account | string | 否 | 账号名称,精确搜索 | -| alias | string | 否 | 账号别名,精确搜索 | -| start | int | 否 | 分页记录起始位置,不传默认为0 | -| length | int | 否 | 单次返回最大记录数,最大1000,不传默认为20 | - -### 请求参数示例 - -```json -{ - "bk_app_code": "esb_test", - "bk_app_secret": "xxx", - "bk_token": "xxx", - "bk_scope_type": "biz", - "bk_scope_id": "1", - "category": 1, - "account": "root", - "start": 0, - "length": 1 -} -``` - -### 返回结果示例 - -```json -{ - "code": 0, - "message": null, - "result": true, - "data": { - "start": 0, - "total": 12, - "data": [ - { - "id": 70, - "bk_scope_type": "biz", - "bk_scope_id": "1", - "account": "root", - "alias": "root", - "category": 1, - "type": 1, - "db_system_account_id": null, - "os": "Linux", - "can_use": true, - "creator": "admin", - "create_time": 1614659536108, - "last_modify_user": "admin", - "last_modify_time": 1614659536116 - } - ], - "length": 1 - }, - "job_request_id": "4e7acb216087eb96" -} -``` - -### 返回结果参数说明 - -#### response -| 字段 | 类型 | 描述 | -|--------------|-----------|-----------| -| result | bool | 请求成功与否。true:请求成功;false请求失败 | -| code | int | 错误编码。 0表示success,>0表示失败错误 | -| message | string | 请求失败返回的错误信息| -| data | object | 请求返回的数据| -| permission | object | 权限信息| - - -#### data.data - -| 字段 | 类型 | 描述 | -|-----------------------|-----------|-----------| -| id | long | 账号ID | -| bk_scope_type | string | 资源范围类型。可选值: biz - 业务,biz_set - 业务集 | -| bk_scope_id | string | 资源范围ID, 与bk_scope_type对应, 表示业务ID或者业务集ID | -| account | string | 账号名称 | -| alias | string | 账号别名 | -| category | int | 账号用途(1:系统账号,2:数据库账号) | -| type | int | 账号类型(1:Linux,2:Windows,9:MySQL,10:Oracle,11:DB2)| -| db_system_account_id | long | 账号用途为数据库账号时该字段生效,表示数据库账号对应的系统账号ID | -| os | string | 账号用途为系统账号时该字段生效,账号对应的OS | -| can_use | bool | 是否有使用该账号的权限 | -| creator | string | 创建人 | -| create_time | long | 创建时间Unix时间戳(ms) | -| last_modify_user | string | 最近一次修改人 | -| last_modify_time | long | 最近一次修改时间Unix时间戳(ms) | diff --git a/docs/apidoc/esb/jobv3-confapis/job.yaml b/docs/apidoc/esb/jobv3-confapis/job.yaml index 21ce56357d..ab629af8e9 100644 --- a/docs/apidoc/esb/jobv3-confapis/job.yaml +++ b/docs/apidoc/esb/jobv3-confapis/job.yaml @@ -497,17 +497,6 @@ dest_http_method: POST -- path: /v2/jobv3/search_account/ - name: search_account - label: 搜索账号 - label_en: Search account - suggest_method: GET - api_type: query - comp_codename: generic.v2.jobv3.job_component - dest_path: /api/job/v3/job-manage/search_account/ - dest_http_method: GET - - - path: /v2/jobv3/create_account/ name: create_account label: 创建账号 diff --git a/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages.properties b/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages.properties index 4450fb72f7..3a2677ea98 100644 --- a/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages.properties +++ b/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages.properties @@ -63,9 +63,9 @@ validation.constraints.InvalidPort.message=端口号只能为1-65535之间的整 validation.constraints.NotContainSpecialChar.message=不可包含 \\|/:*<>"? 特殊字符 validation.constraints.NotBlankField.message=不能为空 validation.constraints.AccountId_empty.message=账号ID不能为空 -validation.constraints.AccountName_empty.message=账号名称[account]不能为空 -validation.constraints.AccountType_empty.message=账号类型[type]不能为空 -validation.constraints.AccountCategory_empty.message=账号用途[category]不能为空 -validation.constraints.AccountPassword_tooLong.message=账号密码[password]不能超过255字符 -validation.constraints.AccountAlias_tooLong.message=账号别名[alias]不能超过255字符 -validation.constraints.AccountDescription_tooLong.message=账号描述[description]不能超过1024字符 +validation.constraints.AccountName_empty.message=账号名称不能为空 +validation.constraints.AccountType_illegal.message=账号类型取值非法 +validation.constraints.AccountCategory_illegal.message=账号用途取值非法 +validation.constraints.AccountPassword_tooLong.message=账号密码不能超过255字符 +validation.constraints.AccountAlias_tooLong.message=账号别名不能超过255字符 +validation.constraints.AccountDescription_tooLong.message=账号描述不能超过1024字符 diff --git a/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_en.properties b/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_en.properties index 25eac98244..aff3dd34a6 100644 --- a/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_en.properties +++ b/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_en.properties @@ -62,9 +62,9 @@ validation.constraints.InvalidFileUploadSettingAmount.message=File size must be validation.constraints.InvalidPort.message=Port must be a integer which is between 1 and 65535 validation.constraints.NotContainSpecialChar.message=Cannot contain special char, such as \\|/:*<>"? validation.constraints.AccountId_empty.message=Account id cannot be empty -validation.constraints.AccountName_empty.message=Account name (account) cannot be empty -validation.constraints.AccountType_empty.message=Account type cannot be empty -validation.constraints.AccountCategory_empty.message=Account category cannot be empty +validation.constraints.AccountName_empty.message=Account name cannot be empty +validation.constraints.AccountType_illegal.message=Account type value is illegal +validation.constraints.AccountCategory_illegal.message=Account category value is illegal validation.constraints.AccountPassword_tooLong.message=Account password length cannot be larger than 255 validation.constraints.AccountAlias_tooLong.message=Account alias length cannot be larger than 255 validation.constraints.AccountDescription_tooLong.message=Account description length cannot be larger than 1024 diff --git a/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_en_US.properties b/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_en_US.properties index 25eac98244..aff3dd34a6 100644 --- a/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_en_US.properties +++ b/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_en_US.properties @@ -62,9 +62,9 @@ validation.constraints.InvalidFileUploadSettingAmount.message=File size must be validation.constraints.InvalidPort.message=Port must be a integer which is between 1 and 65535 validation.constraints.NotContainSpecialChar.message=Cannot contain special char, such as \\|/:*<>"? validation.constraints.AccountId_empty.message=Account id cannot be empty -validation.constraints.AccountName_empty.message=Account name (account) cannot be empty -validation.constraints.AccountType_empty.message=Account type cannot be empty -validation.constraints.AccountCategory_empty.message=Account category cannot be empty +validation.constraints.AccountName_empty.message=Account name cannot be empty +validation.constraints.AccountType_illegal.message=Account type value is illegal +validation.constraints.AccountCategory_illegal.message=Account category value is illegal validation.constraints.AccountPassword_tooLong.message=Account password length cannot be larger than 255 validation.constraints.AccountAlias_tooLong.message=Account alias length cannot be larger than 255 validation.constraints.AccountDescription_tooLong.message=Account description length cannot be larger than 1024 diff --git a/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_zh.properties b/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_zh.properties index 4a816debe1..ba58e44cfc 100644 --- a/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_zh.properties +++ b/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_zh.properties @@ -62,9 +62,9 @@ validation.constraints.InvalidFileUploadSettingAmount.message=文件大小只能 validation.constraints.InvalidPort.message=端口号只能为1-65535之间的整数 validation.constraints.NotContainSpecialChar.message=不可包含 \\|/:*<>"? 特殊字符 validation.constraints.AccountId_empty.message=账号ID不能为空 -validation.constraints.AccountName_empty.message=账号名称[account]不能为空 -validation.constraints.AccountType_empty.message=账号类型[type]不能为空 -validation.constraints.AccountCategory_empty.message=账号用途[category]不能为空 -validation.constraints.AccountPassword_tooLong.message=账号密码[password]不能超过255字符 -validation.constraints.AccountAlias_tooLong.message=账号别名[alias]不能超过255字符 -validation.constraints.AccountDescription_tooLong.message=账号描述[description]不能超过1024字符 +validation.constraints.AccountName_empty.message=账号名称不能为空 +validation.constraints.AccountType_illegal.message=账号类型取值非法 +validation.constraints.AccountCategory_illegal.message=账号用途取值非法 +validation.constraints.AccountPassword_tooLong.message=账号密码不能超过255字符 +validation.constraints.AccountAlias_tooLong.message=账号别名不能超过255字符 +validation.constraints.AccountDescription_tooLong.message=账号描述不能超过1024字符 diff --git a/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_zh_CN.properties b/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_zh_CN.properties index 75372f148e..ec33f140e4 100644 --- a/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_zh_CN.properties +++ b/src/backend/commons/common-i18n/src/main/resources/i18n/validation/ValidationMessages_zh_CN.properties @@ -62,9 +62,9 @@ validation.constraints.InvalidFileUploadSettingAmount.message=文件大小只能 validation.constraints.InvalidPort.message=端口号只能为1-65535之间的整数 validation.constraints.NotContainSpecialChar.message=不可包含 \\|/:*<>"? 特殊字符 validation.constraints.AccountId_empty.message=账号ID不能为空 -validation.constraints.AccountName_empty.message=账号名称[account]不能为空 -validation.constraints.AccountType_empty.message=账号类型[type]不能为空 -validation.constraints.AccountCategory_empty.message=账号用途[category]不能为空 -validation.constraints.AccountPassword_tooLong.message=账号密码[password]不能超过255字符 -validation.constraints.AccountAlias_tooLong.message=账号别名[alias]不能超过255字符 -validation.constraints.AccountDescription_tooLong.message=账号描述[description]不能超过1024字符 +validation.constraints.AccountName_empty.message=账号名称不能为空 +validation.constraints.AccountType_illegal.message=账号类型取值非法 +validation.constraints.AccountCategory_illegal.message=账号用途取值非法 +validation.constraints.AccountPassword_tooLong.message=账号密码不能超过255字符 +validation.constraints.AccountAlias_tooLong.message=账号别名不能超过255字符 +validation.constraints.AccountDescription_tooLong.message=账号描述不能超过1024字符 diff --git a/src/backend/commons/common/src/main/java/com/tencent/bk/job/common/constant/AccountCategoryEnum.java b/src/backend/commons/common/src/main/java/com/tencent/bk/job/common/constant/AccountCategoryEnum.java index 7604303b77..8653ba63f7 100644 --- a/src/backend/commons/common/src/main/java/com/tencent/bk/job/common/constant/AccountCategoryEnum.java +++ b/src/backend/commons/common/src/main/java/com/tencent/bk/job/common/constant/AccountCategoryEnum.java @@ -51,6 +51,13 @@ public static AccountCategoryEnum valOf(Integer category) { return null; } + public static boolean isValid(Integer category) { + if (category == null) { + return false; + } + return valOf(category) != null; + } + public Integer getValue() { return value; } diff --git a/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/v3/EsbAccountV3Resource.java b/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/v3/EsbAccountV3Resource.java index 026dd0e6a7..6c5561feca 100644 --- a/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/v3/EsbAccountV3Resource.java +++ b/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/v3/EsbAccountV3Resource.java @@ -25,9 +25,11 @@ package com.tencent.bk.job.manage.api.esb.v3; import com.tencent.bk.job.common.annotation.EsbAPI; +import com.tencent.bk.job.common.constant.AccountCategoryEnum; import com.tencent.bk.job.common.constant.JobCommonHeaders; import com.tencent.bk.job.common.esb.model.EsbResp; import com.tencent.bk.job.common.esb.model.job.v3.EsbPageDataV3; +import com.tencent.bk.job.common.validation.CheckEnum; import com.tencent.bk.job.manage.model.esb.v3.request.EsbCreateAccountV3Req; import com.tencent.bk.job.manage.model.esb.v3.request.EsbDeleteAccountV3Req; import com.tencent.bk.job.manage.model.esb.v3.request.EsbGetAccountListV3Req; @@ -35,6 +37,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestHeader; @@ -47,6 +50,7 @@ */ @RequestMapping("/esb/api/v3") @RestController +@Validated @EsbAPI public interface EsbAccountV3Resource { @@ -64,17 +68,10 @@ EsbResp> getAccountList( @RequestParam(value = "bk_biz_id", required = false) Long bizId, @RequestParam(value = "bk_scope_type", required = false) String scopeType, @RequestParam(value = "bk_scope_id", required = false) String scopeId, - @RequestParam(value = "category", required = false) Integer category, - @RequestParam(value = "start", required = false) Integer start, - @RequestParam(value = "length", required = false) Integer length); - - @GetMapping("/search_account") - EsbResp> searchAccount( - @RequestHeader(value = JobCommonHeaders.USERNAME) String username, - @RequestHeader(value = JobCommonHeaders.APP_CODE) String appCode, - @RequestParam(value = "bk_scope_type", required = false) String scopeType, - @RequestParam(value = "bk_scope_id", required = false) String scopeId, - @RequestParam(value = "category", required = false) Integer category, + @RequestParam(value = "category", required = false) + @CheckEnum(enumClass = AccountCategoryEnum.class, enumMethod = "isValid", + message = "{validation.constraints.AccountCategory_illegal.message}") + Integer category, @RequestParam(value = "account", required = false) String account, @RequestParam(value = "alias", required = false) String alias, @RequestParam(value = "start", required = false) Integer start, @@ -87,13 +84,13 @@ EsbResp createAccount( EsbCreateAccountV3Req req ); - @DeleteMapping("/delete_account") + @DeleteMapping("/scope/{bk_scope_type}/{bk_scope_id}/accounts/{id}") EsbResp deleteAccount( @RequestHeader(value = JobCommonHeaders.USERNAME) String username, @RequestHeader(value = JobCommonHeaders.APP_CODE) String appCode, - @RequestParam(value = "bk_scope_type", required = false) String scopeType, - @RequestParam(value = "bk_scope_id", required = false) String scopeId, - @RequestParam(value = "id") Long id + @PathVariable(value = "bk_scope_type") String scopeType, + @PathVariable(value = "bk_scope_id") String scopeId, + @PathVariable(value = "id") Long id ); @PostMapping("/delete_account") diff --git a/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/common/consts/account/AccountTypeEnum.java b/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/common/consts/account/AccountTypeEnum.java index 6c068f4c9e..3670fd469d 100644 --- a/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/common/consts/account/AccountTypeEnum.java +++ b/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/common/consts/account/AccountTypeEnum.java @@ -56,6 +56,13 @@ public static AccountTypeEnum valueOf(Integer type) { return null; } + public static boolean isValid(Integer type) { + if (type == null) { + return false; + } + return valueOf(type) != null; + } + public static boolean isValidDbType(Integer type) { if (type == null) { return false; diff --git a/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/request/EsbCreateAccountV3Req.java b/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/request/EsbCreateAccountV3Req.java index 7d9456dc64..7a1c7ea335 100644 --- a/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/request/EsbCreateAccountV3Req.java +++ b/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/request/EsbCreateAccountV3Req.java @@ -25,15 +25,17 @@ package com.tencent.bk.job.manage.model.esb.v3.request; import com.fasterxml.jackson.annotation.JsonProperty; +import com.tencent.bk.job.common.constant.AccountCategoryEnum; import com.tencent.bk.job.common.esb.model.EsbAppScopeReq; import com.tencent.bk.job.common.util.json.SkipLogFields; +import com.tencent.bk.job.common.validation.CheckEnum; +import com.tencent.bk.job.manage.common.consts.account.AccountTypeEnum; import io.swagger.annotations.ApiModel; import lombok.Data; import lombok.ToString; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; @Data @ApiModel("账号创建请求") @@ -49,13 +51,15 @@ public class EsbCreateAccountV3Req extends EsbAppScopeReq { /** * 账号类型:1-Linux,2-Windows,9-Mysql,10-Oracle,11-DB2 */ - @NotNull(message = "{validation.constraints.AccountType_empty.message}") + @CheckEnum(enumClass = AccountTypeEnum.class, enumMethod = "isValid", + message = "{validation.constraints.AccountType_illegal.message}") private Integer type; /** * 账号用途:1-系统账号,2-数据库账号 */ - @NotNull(message = "{validation.constraints.AccountCategory_empty.message}") + @CheckEnum(enumClass = AccountCategoryEnum.class, enumMethod = "isValid", + message = "{validation.constraints.AccountCategory_illegal.message}") private Integer category; /** diff --git a/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/request/EsbGetAccountListV3Req.java b/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/request/EsbGetAccountListV3Req.java index e419430c40..b039d19df5 100644 --- a/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/request/EsbGetAccountListV3Req.java +++ b/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/request/EsbGetAccountListV3Req.java @@ -24,7 +24,9 @@ package com.tencent.bk.job.manage.model.esb.v3.request; +import com.tencent.bk.job.common.constant.AccountCategoryEnum; import com.tencent.bk.job.common.esb.model.EsbAppScopeReq; +import com.tencent.bk.job.common.validation.CheckEnum; import lombok.Data; import lombok.EqualsAndHashCode; @@ -37,8 +39,20 @@ public class EsbGetAccountListV3Req extends EsbAppScopeReq { /** * 账号用途(1:系统账号,2:DB账号),不传则不区分 */ + @CheckEnum(enumClass = AccountCategoryEnum.class, enumMethod = "isValid", + message = "{validation.constraints.AccountCategory_illegal.message}") private Integer category; + /** + * 账号名称 + */ + private String account; + + /** + * 账号别名 + */ + private String alias; + /** * 起始位置 */ diff --git a/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/response/EsbAccountV3DTO.java b/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/response/EsbAccountV3DTO.java index 64ce217a70..9f96c43fc1 100644 --- a/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/response/EsbAccountV3DTO.java +++ b/src/backend/job-manage/api-job-manage/src/main/java/com/tencent/bk/job/manage/model/esb/v3/response/EsbAccountV3DTO.java @@ -65,10 +65,4 @@ public class EsbAccountV3DTO extends EsbAppScopeDTO { */ @JsonProperty("description") private String description; - - /** - * 是否有权限使用 - */ - @JsonProperty("can_use") - private Boolean canUse; } diff --git a/src/backend/job-manage/boot-job-manage/src/test/java/com/tencent/bk/job/manage/dao/AccountDAOImplIntegrationTest.java b/src/backend/job-manage/boot-job-manage/src/test/java/com/tencent/bk/job/manage/dao/AccountDAOImplIntegrationTest.java index b9c0d56ba8..86493ec021 100644 --- a/src/backend/job-manage/boot-job-manage/src/test/java/com/tencent/bk/job/manage/dao/AccountDAOImplIntegrationTest.java +++ b/src/backend/job-manage/boot-job-manage/src/test/java/com/tencent/bk/job/manage/dao/AccountDAOImplIntegrationTest.java @@ -297,7 +297,13 @@ public void testGetAccountByAlias() { @Test @DisplayName("测试获取业务下指定分类的账号") public void testListAllAppAccount() { - List accounts = accountDAO.listAllAppAccount(2L, AccountCategoryEnum.SYSTEM, null); + List accounts = accountDAO.listAppAccount( + 2L, + AccountCategoryEnum.SYSTEM, + null, + null, + null + ); assertThat(accounts).hasSize(3).extracting("id").containsOnly(1L, 2L, 4L); } diff --git a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/impl/EsbGetDBAccountListResourceImpl.java b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/impl/EsbGetDBAccountListResourceImpl.java index 1b59633d42..4823d95774 100644 --- a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/impl/EsbGetDBAccountListResourceImpl.java +++ b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/impl/EsbGetDBAccountListResourceImpl.java @@ -72,7 +72,7 @@ public EsbResp> getUserOwnDbAccountList(EsbGetDBAccountLis throw new InvalidParamException(checkResult); } long appId = request.getAppId(); - List dbAccounts = accountService.listAllAppAccount(appId, AccountCategoryEnum.DB); + List dbAccounts = accountService.listAppAccount(appId, AccountCategoryEnum.DB); List grantedDbAccounts = new ArrayList<>(); dbAccounts.forEach(dbAccount -> { if (StringUtils.isBlank(dbAccount.getGrantees())) { diff --git a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/impl/EsbGetOSAccountResourceImpl.java b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/impl/EsbGetOSAccountResourceImpl.java index b81d6f45ba..b49d661144 100644 --- a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/impl/EsbGetOSAccountResourceImpl.java +++ b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/impl/EsbGetOSAccountResourceImpl.java @@ -63,7 +63,7 @@ public EsbGetOSAccountResourceImpl(AccountService accountService, public EsbResp> getAppOsAccountList(EsbGetOSAccountListRequest request) { request.fillAppResourceScope(appScopeMappingService); long appId = request.getAppId(); - List systemAccounts = accountService.listAllAppAccount(appId, AccountCategoryEnum.SYSTEM); + List systemAccounts = accountService.listAppAccount(appId, AccountCategoryEnum.SYSTEM); return EsbResp.buildSuccessResp(convertToEsbAccountDTOList(systemAccounts)); } diff --git a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/impl/v3/EsbAccountResourceV3Impl.java b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/impl/v3/EsbAccountResourceV3Impl.java index 2102d95bb9..51367ebe9f 100644 --- a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/impl/v3/EsbAccountResourceV3Impl.java +++ b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/esb/impl/v3/EsbAccountResourceV3Impl.java @@ -24,21 +24,20 @@ package com.tencent.bk.job.manage.api.esb.impl.v3; +import com.tencent.bk.audit.annotations.AuditEntry; +import com.tencent.bk.audit.annotations.AuditRequestBody; import com.tencent.bk.job.common.constant.AccountCategoryEnum; import com.tencent.bk.job.common.esb.metrics.EsbApiTimed; import com.tencent.bk.job.common.esb.model.EsbResp; import com.tencent.bk.job.common.esb.model.job.v3.EsbPageDataV3; +import com.tencent.bk.job.common.iam.constant.ActionId; import com.tencent.bk.job.common.metrics.CommonMetricNames; import com.tencent.bk.job.common.model.BaseSearchCondition; -import com.tencent.bk.job.common.model.PageData; -import com.tencent.bk.job.common.model.dto.AppResourceScope; import com.tencent.bk.job.common.service.AppScopeMappingService; import com.tencent.bk.job.common.util.date.DateUtils; import com.tencent.bk.job.manage.api.esb.v3.EsbAccountV3Resource; -import com.tencent.bk.job.manage.auth.AccountAuthService; import com.tencent.bk.job.manage.common.consts.account.AccountTypeEnum; import com.tencent.bk.job.manage.model.dto.AccountDTO; -import com.tencent.bk.job.manage.model.dto.AccountSearchDTO; import com.tencent.bk.job.manage.model.esb.v3.request.EsbCreateAccountV3Req; import com.tencent.bk.job.manage.model.esb.v3.request.EsbDeleteAccountV3Req; import com.tencent.bk.job.manage.model.esb.v3.request.EsbGetAccountListV3Req; @@ -50,25 +49,19 @@ import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; @RestController @Slf4j public class EsbAccountResourceV3Impl implements EsbAccountV3Resource { private final AccountService accountService; private final AppScopeMappingService appScopeMappingService; - private final AccountAuthService accountAuthService; @Autowired public EsbAccountResourceV3Impl(AccountService accountService, - AppScopeMappingService appScopeMappingService, - AccountAuthService accountAuthService) { + AppScopeMappingService appScopeMappingService) { this.accountService = accountService; this.appScopeMappingService = appScopeMappingService; - this.accountAuthService = accountAuthService; } @Override @@ -77,14 +70,25 @@ public EsbResp> getAccountListUsingPost(EsbGetAcc request.fillAppResourceScope(appScopeMappingService); long appId = request.getAppId(); BaseSearchCondition baseSearchCondition = buildBaseSearchCondition(request.getStart(), request.getLength()); - List accountList = accountService.listAllAppAccount(appId, null, baseSearchCondition); + AccountCategoryEnum category = AccountCategoryEnum.valOf(request.getCategory()); + List accountList = accountService.listAppAccount( + appId, + category, + request.getAccount(), + request.getAlias(), + baseSearchCondition + ); List accountV3DTOList = convertToEsbAccountV3DTOList(accountList); - Integer accountCount = accountService.countAllAppAccount(appId, null); + Integer accountCount = accountService.countAppAccount( + appId, + category, + request.getAccount(), + request.getAlias() + ); EsbPageDataV3 esbPageData = new EsbPageDataV3<>(); esbPageData.setTotal(accountCount.longValue()); esbPageData.setStart(baseSearchCondition.getStart()); esbPageData.setLength(baseSearchCondition.getLength()); - addPermissionForData(request.getUserName(), request.getAppResourceScope(), accountV3DTOList); esbPageData.setData(accountV3DTOList); return EsbResp.buildSuccessResp(esbPageData); } @@ -127,6 +131,8 @@ public EsbResp> getAccountList(String username, String scopeType, String scopeId, Integer category, + String account, + String alias, Integer start, Integer length) { EsbGetAccountListV3Req request = new EsbGetAccountListV3Req(); @@ -136,54 +142,16 @@ public EsbResp> getAccountList(String username, request.setScopeType(scopeType); request.setScopeId(scopeId); request.setCategory(category); + request.setAccount(account); + request.setAlias(alias); request.setStart(start); request.setLength(length); return getAccountListUsingPost(request); } @Override - public EsbResp> searchAccount(String username, - String appCode, - String scopeType, - String scopeId, - Integer category, - String account, - String alias, - Integer start, - Integer length) { - Long appId = appScopeMappingService.getAppIdByScope(scopeType, scopeId); - BaseSearchCondition baseSearchCondition = buildBaseSearchCondition(start, length); - AccountSearchDTO accountSearchDTO = new AccountSearchDTO(); - accountSearchDTO.setAppId(appId); - accountSearchDTO.setCategory(category); - accountSearchDTO.setAccount(account); - accountSearchDTO.setAlias(alias); - PageData pageData = accountService.accurateSearchPageAccount(accountSearchDTO, baseSearchCondition); - EsbPageDataV3 esbPageData = new EsbPageDataV3<>(); - esbPageData.setTotal(pageData.getTotal()); - esbPageData.setStart(pageData.getStart()); - esbPageData.setLength(pageData.getPageSize()); - List esbAccountV3DTOList = pageData.getData().stream() - .map(AccountDTO::toEsbAccountV3DTO).collect(Collectors.toList()); - addPermissionForData(username, new AppResourceScope(scopeType, scopeId, appId), esbAccountV3DTOList); - esbPageData.setData(esbAccountV3DTOList); - return EsbResp.buildSuccessResp(esbPageData); - } - - private void addPermissionForData(String username, - AppResourceScope appResourceScope, - List esbAccountV3DTOList) { - List accountIdList = esbAccountV3DTOList.stream() - .map(EsbAccountV3DTO::getId).collect(Collectors.toList()); - List canUseIdList = accountAuthService.batchAuthUseAccount(username, appResourceScope, accountIdList); - Set canUseIds = new HashSet<>(canUseIdList); - esbAccountV3DTOList.forEach(esbAccountV3DTO -> { - esbAccountV3DTO.setCanUse(canUseIds.contains(esbAccountV3DTO.getId())); - }); - } - - @Override - public EsbResp createAccount(EsbCreateAccountV3Req req) { + @AuditEntry(actionId = ActionId.CREATE_ACCOUNT) + public EsbResp createAccount(@AuditRequestBody EsbCreateAccountV3Req req) { req.fillAppResourceScope(appScopeMappingService); AccountDTO accountDTO = buildCreateAccountDTO(req.getUserName(), req.getAppId(), req); AccountDTO createdAccountDTO = accountService.createAccount(req.getUserName(), accountDTO); @@ -222,6 +190,7 @@ public AccountDTO buildCreateAccountDTO(String operator, long appId, EsbCreateAc } @Override + @AuditEntry(actionId = ActionId.MANAGE_ACCOUNT) public EsbResp deleteAccount(String username, String appCode, String scopeType, @@ -234,7 +203,8 @@ public EsbResp deleteAccount(String username, } @Override - public EsbResp deleteAccountUsingPost(EsbDeleteAccountV3Req req) { + @AuditEntry(actionId = ActionId.MANAGE_ACCOUNT) + public EsbResp deleteAccountUsingPost(@AuditRequestBody EsbDeleteAccountV3Req req) { req.fillAppResourceScope(appScopeMappingService); return deleteAccount(req.getUserName(), req.getAppCode(), req.getScopeType(), req.getScopeId(), req.getId()); } diff --git a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/inner/impl/ServiceAccountResourceImpl.java b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/inner/impl/ServiceAccountResourceImpl.java index e4a5d0bf40..9c679f7795 100644 --- a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/inner/impl/ServiceAccountResourceImpl.java +++ b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/inner/impl/ServiceAccountResourceImpl.java @@ -191,7 +191,7 @@ public Response saveAccount(String username, @Override public Response> listAccounts(Long appId, Integer category) { List accountDTOS = - accountService.listAllAppAccount(appId, AccountCategoryEnum.valOf(category)); + accountService.listAppAccount(appId, AccountCategoryEnum.valOf(category)); List accounts = new ArrayList<>(); if (accountDTOS != null && !accountDTOS.isEmpty()) { for (AccountDTO accountDTO : accountDTOS) { diff --git a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/web/impl/WebAppAccountResourceImpl.java b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/web/impl/WebAppAccountResourceImpl.java index 4bfd06b2e1..032561ac8a 100644 --- a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/web/impl/WebAppAccountResourceImpl.java +++ b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/api/web/impl/WebAppAccountResourceImpl.java @@ -242,7 +242,7 @@ public Response> listAccounts(String username, throw new InvalidParamException(ErrorCode.ILLEGAL_PARAM); } List accountDTOS = - accountService.listAllAppAccount(appResourceScope.getAppId(), AccountCategoryEnum.valOf(category)); + accountService.listAppAccount(appResourceScope.getAppId(), AccountCategoryEnum.valOf(category)); List accountVOS = new ArrayList<>(); if (accountDTOS != null && !accountDTOS.isEmpty()) { List accountIdList = new ArrayList<>(); diff --git a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/dao/AccountDAO.java b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/dao/AccountDAO.java index 92cf82628e..b73ba9660a 100644 --- a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/dao/AccountDAO.java +++ b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/dao/AccountDAO.java @@ -30,7 +30,6 @@ import com.tencent.bk.job.manage.common.consts.account.AccountTypeEnum; import com.tencent.bk.job.manage.model.dto.AccountDTO; import com.tencent.bk.job.manage.model.dto.AccountDisplayDTO; -import com.tencent.bk.job.manage.model.dto.AccountSearchDTO; import java.util.Collection; import java.util.List; @@ -103,16 +102,6 @@ public interface AccountDAO { */ PageData listPageAccount(AccountDTO accountQuery, BaseSearchCondition baseSearchCondition); - /** - * 分页精确搜索账号列表 - * - * @param accountSearchDTO 账号搜索条件 - * @param baseSearchCondition 基础查询条件 - * @return 账号分页 - */ - PageData accurateSearchPageAccount(AccountSearchDTO accountSearchDTO, - BaseSearchCondition baseSearchCondition); - /** * 分页搜索账号列表 * @@ -127,12 +116,17 @@ PageData accurateSearchPageAccount(AccountSearchDTO accountSearchDTO * * @param appId 业务ID * @param category 账号类型,如果传入null,表示所有类型 + * @param account 账号名称 + * @param alias 账号别名 * @return 账号列表 */ - List listAllAppAccount(Long appId, AccountCategoryEnum category, - BaseSearchCondition baseSearchCondition); + List listAppAccount(Long appId, + AccountCategoryEnum category, + String account, + String alias, + BaseSearchCondition baseSearchCondition); - Integer countAllAppAccount(Long appId, AccountCategoryEnum category); + Integer countAppAccount(Long appId, AccountCategoryEnum category, String account, String alias); /** * 根据别名获取账号信息 diff --git a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/dao/impl/AccountDAOImpl.java b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/dao/impl/AccountDAOImpl.java index 9907366a66..d7d7183213 100644 --- a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/dao/impl/AccountDAOImpl.java +++ b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/dao/impl/AccountDAOImpl.java @@ -34,7 +34,6 @@ import com.tencent.bk.job.manage.dao.AccountDAO; import com.tencent.bk.job.manage.model.dto.AccountDTO; import com.tencent.bk.job.manage.model.dto.AccountDisplayDTO; -import com.tencent.bk.job.manage.model.dto.AccountSearchDTO; import com.tencent.bk.job.manage.model.tables.Account; import com.tencent.bk.job.manage.model.tables.TaskTemplate; import com.tencent.bk.job.manage.model.tables.TaskTemplateStep; @@ -344,32 +343,6 @@ public PageData listPageAccount(AccountDTO accountQuery, return listPageAccountByConditions(baseSearchCondition, conditions, count); } - @Override - public PageData accurateSearchPageAccount(AccountSearchDTO accountSearchDTO, - BaseSearchCondition baseSearchCondition) { - List conditions = buildConditions(accountSearchDTO); - long count = countAccountByConditions(conditions); - return listPageAccountByConditions(baseSearchCondition, conditions, count); - } - - private List buildConditions(AccountSearchDTO accountSearchDTO) { - List conditions = new ArrayList<>(); - conditions.add(TB_ACCOUNT.IS_DELETED.eq(UByte.valueOf(0))); - if (accountSearchDTO.getAppId() != null) { - conditions.add(TB_ACCOUNT.APP_ID.eq(accountSearchDTO.getAppId())); - } - if (accountSearchDTO.getCategory() != null) { - conditions.add(TB_ACCOUNT.CATEGORY.eq(JooqDataTypeUtil.getByteFromInteger(accountSearchDTO.getCategory()))); - } - if (StringUtils.isNotBlank(accountSearchDTO.getAccount())) { - conditions.add(TB_ACCOUNT.ACCOUNT_.eq(accountSearchDTO.getAccount())); - } - if (StringUtils.isNotBlank(accountSearchDTO.getAlias())) { - conditions.add(TB_ACCOUNT.ALIAS.eq(accountSearchDTO.getAlias())); - } - return conditions; - } - public PageData listPageAccountByConditions(BaseSearchCondition baseSearchCondition, List conditions, long count) { @@ -500,7 +473,7 @@ private List buildConditionList(Long appId, String keyword, BaseSearc return conditions; } - private List genBaseConditions(Long appId, AccountCategoryEnum category) { + private List genBaseConditions(Long appId, AccountCategoryEnum category, String account, String alias) { List conditions = new ArrayList<>(); conditions.add(TB_ACCOUNT.IS_DELETED.eq(UByte.valueOf(0))); if (appId != null) { @@ -509,19 +482,28 @@ private List genBaseConditions(Long appId, AccountCategoryEnum catego if (category != null) { conditions.add(TB_ACCOUNT.CATEGORY.eq(JooqDataTypeUtil.getByteFromInteger(category.getValue()))); } + if (StringUtils.isNotBlank(account)) { + conditions.add(TB_ACCOUNT.ACCOUNT_.eq(account)); + } + if (StringUtils.isNotBlank(alias)) { + conditions.add(TB_ACCOUNT.ALIAS.eq(alias)); + } return conditions; } @Override - public List listAllAppAccount(Long appId, AccountCategoryEnum category, - BaseSearchCondition baseSearchCondition) { - List conditions = genBaseConditions(appId, category); + public List listAppAccount(Long appId, + AccountCategoryEnum category, + String account, + String alias, + BaseSearchCondition baseSearchCondition) { + List conditions = genBaseConditions(appId, category, account, alias); return listAllAppAccount(conditions, baseSearchCondition); } @Override - public Integer countAllAppAccount(Long appId, AccountCategoryEnum category) { - List conditions = genBaseConditions(appId, category); + public Integer countAppAccount(Long appId, AccountCategoryEnum category, String account, String alias) { + List conditions = genBaseConditions(appId, category, account, alias); return countAllAppAccount(conditions); } @@ -576,16 +558,10 @@ public AccountDTO getAccount(Long appId, AccountCategoryEnum category, String al @Override public AccountDTO getAccount(Long appId, AccountCategoryEnum category, AccountTypeEnum type, String account, String alias) { - List conditions = genBaseConditions(appId, category); + List conditions = genBaseConditions(appId, category, account, alias); if (type != null) { conditions.add(TB_ACCOUNT.TYPE.eq(JooqDataTypeUtil.getByteFromInteger(type.getType()))); } - if (StringUtils.isNotBlank(account)) { - conditions.add(TB_ACCOUNT.ACCOUNT_.eq(account)); - } - if (StringUtils.isNotBlank(alias)) { - conditions.add(TB_ACCOUNT.ALIAS.eq(alias)); - } Record record = ctx.select(ALL_FILED) .from(TB_ACCOUNT) .where(conditions) diff --git a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/service/AccountService.java b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/service/AccountService.java index da177c1937..0032675aec 100644 --- a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/service/AccountService.java +++ b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/service/AccountService.java @@ -30,7 +30,6 @@ import com.tencent.bk.job.manage.common.consts.account.AccountTypeEnum; import com.tencent.bk.job.manage.model.dto.AccountDTO; import com.tencent.bk.job.manage.model.dto.AccountDisplayDTO; -import com.tencent.bk.job.manage.model.dto.AccountSearchDTO; import com.tencent.bk.job.manage.model.web.request.AccountCreateUpdateReq; import java.util.Collection; @@ -128,16 +127,6 @@ public interface AccountService { */ PageData listPageAccount(AccountDTO accountQuery, BaseSearchCondition baseSearchCondition); - /** - * 分页精确搜索账号列表 - * - * @param accountSearchDTO 账号搜索条件 - * @param baseSearchCondition 基础查询条件 - * @return 账号分页 - */ - PageData accurateSearchPageAccount(AccountSearchDTO accountSearchDTO, - BaseSearchCondition baseSearchCondition); - /** * 分页搜索账号列表 * @@ -166,7 +155,7 @@ PageData searchPageAccount( * @param category 账号类型,如果传入null,表示所有类型 * @return 账号列表 */ - List listAllAppAccount(Long appId, AccountCategoryEnum category); + List listAppAccount(Long appId, AccountCategoryEnum category); /** * 获取业务下账号列表 @@ -175,10 +164,13 @@ PageData searchPageAccount( * @param category 账号类型,如果传入null,表示所有类型 * @return 账号列表 */ - List listAllAppAccount(Long appId, AccountCategoryEnum category, - BaseSearchCondition baseSearchCondition); + List listAppAccount(Long appId, + AccountCategoryEnum category, + String account, + String alias, + BaseSearchCondition baseSearchCondition); - Integer countAllAppAccount(Long appId, AccountCategoryEnum category); + Integer countAppAccount(Long appId, AccountCategoryEnum category, String account, String alias); boolean isAccountRefByAnyStep(Long accountId); diff --git a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/service/impl/AccountServiceImpl.java b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/service/impl/AccountServiceImpl.java index 68ff134957..1b201a0cb3 100644 --- a/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/service/impl/AccountServiceImpl.java +++ b/src/backend/job-manage/service-job-manage/src/main/java/com/tencent/bk/job/manage/service/impl/AccountServiceImpl.java @@ -57,7 +57,6 @@ import com.tencent.bk.job.manage.dao.AccountDAO; import com.tencent.bk.job.manage.model.dto.AccountDTO; import com.tencent.bk.job.manage.model.dto.AccountDisplayDTO; -import com.tencent.bk.job.manage.model.dto.AccountSearchDTO; import com.tencent.bk.job.manage.model.web.request.AccountCreateUpdateReq; import com.tencent.bk.job.manage.model.web.request.globalsetting.AccountNameRule; import com.tencent.bk.job.manage.service.AccountService; @@ -314,12 +313,6 @@ public PageData listPageAccount(AccountDTO accountQuery, BaseSearchC return accountDAO.listPageAccount(accountQuery, baseSearchCondition); } - @Override - public PageData accurateSearchPageAccount(AccountSearchDTO accountSearchDTO, - BaseSearchCondition baseSearchCondition) { - return accountDAO.accurateSearchPageAccount(accountSearchDTO, baseSearchCondition); - } - @Override public PageData searchPageAccount(Long appId, String keyword, BaseSearchCondition baseSearchCondition) throws ServiceException { @@ -332,19 +325,22 @@ public AccountDTO getAccount(Long appId, AccountCategoryEnum category, String al } @Override - public List listAllAppAccount(Long appId, AccountCategoryEnum category) { - return accountDAO.listAllAppAccount(appId, category, null); + public List listAppAccount(Long appId, AccountCategoryEnum category) { + return accountDAO.listAppAccount(appId, category, null, null, null); } @Override - public List listAllAppAccount(Long appId, AccountCategoryEnum category, - BaseSearchCondition baseSearchCondition) { - return accountDAO.listAllAppAccount(appId, category, baseSearchCondition); + public List listAppAccount(Long appId, + AccountCategoryEnum category, + String account, + String alias, + BaseSearchCondition baseSearchCondition) { + return accountDAO.listAppAccount(appId, category, account, alias, baseSearchCondition); } @Override - public Integer countAllAppAccount(Long appId, AccountCategoryEnum category) { - return accountDAO.countAllAppAccount(appId, category); + public Integer countAppAccount(Long appId, AccountCategoryEnum category, String account, String alias) { + return accountDAO.countAppAccount(appId, category, account, alias); } @Override