diff --git a/src/main/java/com/easysoftware/adapter/query/CoAdminAdapter.java b/src/main/java/com/easysoftware/adapter/query/CoAdminAdapter.java index e44456a7becfe95ac5d483429c2975003292e9db..e970d64fd3ca215f51f7f4f838e82fb6b42d6988 100644 --- a/src/main/java/com/easysoftware/adapter/query/CoAdminAdapter.java +++ b/src/main/java/com/easysoftware/adapter/query/CoAdminAdapter.java @@ -16,7 +16,8 @@ import java.util.HashMap; import com.easysoftware.application.apply.ApplyService; import com.easysoftware.application.applyform.ApplyFormService; import com.easysoftware.application.applyform.dto.ProcessApply; - +import com.easysoftware.application.collaboration.CoAdminService; +import com.easysoftware.application.collaboration.dto.PackageSearchCondition; import com.easysoftware.application.applyform.dto.ApplyFormSearchAdminCondition; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -70,18 +71,24 @@ public class CoAdminAdapter { @Autowired private ApplyFormService applyFormService; + /** + * Autowired service for CoAdminService. + */ + @Autowired + private CoAdminService coAdminService; + /** * Endpoint to search for repos based on the provided search * condition. * - * @param repo The search condition for querying repos. + * @param condition The search condition for querying repos. * @return ResponseEntity. */ - @GetMapping() + @GetMapping("/user/repos") @RequestLimitRedis() @PreUserPermission(UerPermissionDef.COLLABORATION_PERMISSION_ADMIN) - public ResponseEntity queryRepos(@RequestParam(value = "repo") String repo) { - return ResultUtil.success(HttpStatus.OK, "success"); + public ResponseEntity queryRepos(@Valid final PackageSearchCondition condition) { + return coAdminService.queryAdminPackages(condition); } /** diff --git a/src/main/java/com/easysoftware/application/collaboration/CoAdminService.java b/src/main/java/com/easysoftware/application/collaboration/CoAdminService.java new file mode 100644 index 0000000000000000000000000000000000000000..94be9cbefbbf70c736aefa9f13f717c758f87ab2 --- /dev/null +++ b/src/main/java/com/easysoftware/application/collaboration/CoAdminService.java @@ -0,0 +1,25 @@ +/* Copyright (c) 2024 openEuler Community + EasySoftware is licensed under the Mulan PSL v2. + You can use this software according to the terms and conditions of the Mulan PSL v2. + You may obtain a copy of Mulan PSL v2 at: + http://license.coscl.org.cn/MulanPSL2 + THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + See the Mulan PSL v2 for more details. +*/ +package com.easysoftware.application.collaboration; + +import org.springframework.http.ResponseEntity; + +import com.easysoftware.application.collaboration.dto.PackageSearchCondition; + +public interface CoAdminService { + /** + * Searches for packages based on the specified search conditions. + * + * @param condition The search conditions to filter packages. + * @return ResponseEntity. + */ + ResponseEntity queryAdminPackages(PackageSearchCondition condition); +} diff --git a/src/main/java/com/easysoftware/application/collaboration/CoAdminServiceImpl.java b/src/main/java/com/easysoftware/application/collaboration/CoAdminServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..c69f7284f118b199d913ddd47915316d83d64080 --- /dev/null +++ b/src/main/java/com/easysoftware/application/collaboration/CoAdminServiceImpl.java @@ -0,0 +1,46 @@ +/* Copyright (c) 2024 openEuler Community + EasySoftware is licensed under the Mulan PSL v2. + You can use this software according to the terms and conditions of the Mulan PSL v2. + You may obtain a copy of Mulan PSL v2 at: + http://license.coscl.org.cn/MulanPSL2 + THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + See the Mulan PSL v2 for more details. +*/ +package com.easysoftware.application.collaboration; + +import java.util.Map; + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +import com.easysoftware.application.collaboration.dto.PackageSearchCondition; +import com.easysoftware.common.utils.ResultUtil; +import com.easysoftware.domain.collaboration.gateway.PackageStatusGateway; + +import jakarta.annotation.Resource; +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class CoAdminServiceImpl implements CoAdminService { + /** + * Resource for interacting with package status Gateway. + */ + @Resource + private PackageStatusGateway pkgStatusGateway; + + /** + * Searches for packages based on the specified search conditions. + * + * @param condition The search conditions to filter packages. + * @return ResponseEntity. + */ + @Override + public ResponseEntity queryAdminPackages(PackageSearchCondition condition) { + Map res = pkgStatusGateway.queryAllByCondition(condition); + return ResultUtil.success(HttpStatus.OK, res); + } +} diff --git a/src/main/java/com/easysoftware/common/account/UserPermission.java b/src/main/java/com/easysoftware/common/account/UserPermission.java index 2e5c1f102efba8c8c6b3b965e6ee1a1499d5e083..ccde5c8128b5a7957f78021610886e0f6bd229f6 100644 --- a/src/main/java/com/easysoftware/common/account/UserPermission.java +++ b/src/main/java/com/easysoftware/common/account/UserPermission.java @@ -140,6 +140,28 @@ public class UserPermission { return loginName; } + /** + * Get user name by user token and manage token. + * @return user name. + */ + public String getUserName() { + String userToken = getUserToken(); + String manageToken = getManageToken(); + + // 使用userToken、manageToken查询用户信息 + Cookie cookie = getCookie(cookieTokenName); + String response = HttpClientUtil.getHttpClient(userInfoApi, manageToken, userToken, cookie.getValue()); + JsonNode resJson = ObjectMapperUtil.toJsonNode(response); + + String resCode = resJson.path("code").asText(); + if (!"200".equals(resCode)) { + LOGGER.error("query user login name failed"); + throw new HttpRequestException("query user login name failed"); + } + String userName = resJson.path("data").path("username").asText(); + return userName; + } + /** * Get user repos. * @return Collection of repos. @@ -152,7 +174,7 @@ public class UserPermission { String response = HttpClientUtil.getHttpClient(String.format(userReposApi, login), null, null, null); JsonNode resJson = ObjectMapperUtil.toJsonNode(response); - String resCode = resJson.get("code").asText(); + String resCode = resJson.path("code").asText(); if (!"200".equals(resCode)) { LOGGER.error("query user repos failed"); @@ -183,7 +205,7 @@ public class UserPermission { String response = HttpClientUtil.getHttpClient(permissionApi, manageToken, userToken, cookie.getValue()); JsonNode resJson = ObjectMapperUtil.toJsonNode(response); - String resCode = resJson.get("code").asText(); + String resCode = resJson.path("code").asText(); // 查询权限失败 if (!"200".equals(resCode)) { LOGGER.error("query user permissions failed"); diff --git a/src/main/java/com/easysoftware/domain/collaboration/gateway/PackageStatusGateway.java b/src/main/java/com/easysoftware/domain/collaboration/gateway/PackageStatusGateway.java index 06b6b8b96976517a6c79fe3d18c8fc999339961f..7abb41c433f11e72085bad05738f2c893351bb03 100644 --- a/src/main/java/com/easysoftware/domain/collaboration/gateway/PackageStatusGateway.java +++ b/src/main/java/com/easysoftware/domain/collaboration/gateway/PackageStatusGateway.java @@ -25,6 +25,14 @@ public interface PackageStatusGateway { */ Map queryByCondition(PackageSearchCondition condition); + /** + * Query information based on the provided search condition. + * + * @param condition The search condition for querying package + * @return A map containing relevant information + */ + Map queryAllByCondition(PackageSearchCondition condition); + /** * update package status based on the provided condition. * diff --git a/src/main/java/com/easysoftware/infrastructure/applyform/gatewayimpl/ApplyFormGatewayImpl.java b/src/main/java/com/easysoftware/infrastructure/applyform/gatewayimpl/ApplyFormGatewayImpl.java index 73c49e5cf6d8c261fbdb72b39fd1e6e3c2d2905a..5ac33095a12bac339f5825c77ed049f5618ac20c 100644 --- a/src/main/java/com/easysoftware/infrastructure/applyform/gatewayimpl/ApplyFormGatewayImpl.java +++ b/src/main/java/com/easysoftware/infrastructure/applyform/gatewayimpl/ApplyFormGatewayImpl.java @@ -168,6 +168,7 @@ public class ApplyFormGatewayImpl implements ApplyFormGateway { UpdateWrapper wrapper = new UpdateWrapper<>(); wrapper.eq("apply_id", processApply.getApplyId()); + applyFormDO.setAdminstrator(userPermission.getUserName()); int mark = applyFormDOMapper.update(applyFormDO, wrapper); if (mark != 1) { throw new UpdateException("update apply status failed"); diff --git a/src/main/java/com/easysoftware/infrastructure/collaboration/gatewayimpl/PackageStatusGatewayImpl.java b/src/main/java/com/easysoftware/infrastructure/collaboration/gatewayimpl/PackageStatusGatewayImpl.java index 2f5739def7d889a615ecfb833cb72bf160b92055..20e0a26abdb2338d6b0231527eae232dcf241187 100644 --- a/src/main/java/com/easysoftware/infrastructure/collaboration/gatewayimpl/PackageStatusGatewayImpl.java +++ b/src/main/java/com/easysoftware/infrastructure/collaboration/gatewayimpl/PackageStatusGatewayImpl.java @@ -62,11 +62,33 @@ public class PackageStatusGatewayImpl implements PackageStatusGateway { */ @Override public Map queryByCondition(final PackageSearchCondition condition) { + String login = userPermission.getUserLogin(); + return queryRepoByCondition(condition, login); + } + + /** + * Query information based on the provided search condition. + * + * @param condition The search condition for querying package + * @return A map containing relevant information + */ + @Override + public Map queryAllByCondition(final PackageSearchCondition condition) { + return queryRepoByCondition(condition, "*"); + } + + /** + * Query repos based on the provided search condition. + * + * @param condition The search condition for querying package + * @param login user gitee id + * @return A map containing relevant information + */ + public Map queryRepoByCondition(final PackageSearchCondition condition, String login) { List pkgs = new ArrayList<>(); int total = 0; try { Map query = ObjectMapperUtil.jsonToMap(condition); - String login = userPermission.getUserLogin(); ListenableFuture future = esAsyncHttpUtil.executeSearch(PackageConstant.PACKAGE_STATUS_INDEX, query, login); String responseBody = future.get().getResponseBody(UTF_8);