From e9091831a3a8a0c5dab6d7619ab3bbe750befde0 Mon Sep 17 00:00:00 2001 From: jsonwan Date: Thu, 12 Oct 2023 15:49:53 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8F=90=E4=BE=9B=E8=B4=A6=E5=8F=B7?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E3=80=81=E5=88=9B=E5=BB=BA=E3=80=81=E5=88=A0?= =?UTF-8?q?=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 | 2 +- .../impl/EsbGetDBAccountListResourceImpl.java | 2 +- .../esb/impl/EsbGetOSAccountResourceImpl.java | 2 +- .../esb/impl/v3/EsbAccountResourceV3Impl.java | 74 ++++--------- .../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, 136 insertions(+), 407 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..a1c3378d70 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,7 @@ public void testGetAccountByAlias() { @Test @DisplayName("测试获取业务下指定分类的账号") public void testListAllAppAccount() { - List accounts = accountDAO.listAllAppAccount(2L, AccountCategoryEnum.SYSTEM, null); + List accounts = accountDAO.listAppAccount(2L, AccountCategoryEnum.SYSTEM, 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..e25827a8d4 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 @@ -30,15 +30,11 @@ 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; @@ -50,25 +46,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 +67,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 +128,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,52 +139,13 @@ 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) { req.fillAppResourceScope(appScopeMappingService); 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