diff --git a/src/main/java/com/easysoftware/adapter/query/CoAdminAdapter.java b/src/main/java/com/easysoftware/adapter/query/CoAdminAdapter.java index 6aedf8816cdd07b1797d4ee5d792d7be5c43f19c..21c9c74235d5c041c414915c16b881d6c4b98e59 100644 --- a/src/main/java/com/easysoftware/adapter/query/CoAdminAdapter.java +++ b/src/main/java/com/easysoftware/adapter/query/CoAdminAdapter.java @@ -16,7 +16,7 @@ import java.util.HashMap; import com.easysoftware.application.apply.ApplyService; import com.easysoftware.application.applyform.ApplyFormService; -import com.easysoftware.application.applyform.dto.ApplyFormSearchMaintainerCondition; +import com.easysoftware.application.applyform.dto.ApplyFormSearchAdminCondition; import jakarta.validation.Valid; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -127,7 +127,7 @@ public class CoAdminAdapter { @GetMapping("/query/apply") @RequestLimitRedis() @PreUserPermission(UerPermissionDef.COLLABORATION_PERMISSION_ADMIN) - public ResponseEntity getApplyFrom(@Valid final ApplyFormSearchMaintainerCondition condition) { - return applyFormService.searchApplyFromByMaintainer(condition); + public ResponseEntity getApplyFrom(@Valid final ApplyFormSearchAdminCondition condition) { + return applyFormService.searchApplyFromByAdmin(condition); } } diff --git a/src/main/java/com/easysoftware/application/applyform/ApplyFormService.java b/src/main/java/com/easysoftware/application/applyform/ApplyFormService.java index 26ea6ddabeb0ff71ad6cd5ff0399c8eb3d3d1b2e..0bebfa7b09e369101ad61b7a7f678e3ed28f4861 100644 --- a/src/main/java/com/easysoftware/application/applyform/ApplyFormService.java +++ b/src/main/java/com/easysoftware/application/applyform/ApplyFormService.java @@ -11,6 +11,7 @@ package com.easysoftware.application.applyform; +import com.easysoftware.application.applyform.dto.ApplyFormSearchAdminCondition; import org.springframework.http.ResponseEntity; import com.easysoftware.application.applyform.dto.ApplyFormSearchMaintainerCondition; @@ -25,4 +26,11 @@ public interface ApplyFormService { */ ResponseEntity searchApplyFromByMaintainer(ApplyFormSearchMaintainerCondition condition); + /** + * Search for apply form based on the provided search condition by admin. + * + * @param condition The search condition for querying apply form. + * @return ResponseEntity. + */ + ResponseEntity searchApplyFromByAdmin(ApplyFormSearchAdminCondition condition); } diff --git a/src/main/java/com/easysoftware/application/applyform/ApplyFormServiceImpl.java b/src/main/java/com/easysoftware/application/applyform/ApplyFormServiceImpl.java index 5f5cd079de5f89283f2eab76f1d00bcf1e412299..c7e1ae6b5984edf67204197901901e8a6d5233ff 100644 --- a/src/main/java/com/easysoftware/application/applyform/ApplyFormServiceImpl.java +++ b/src/main/java/com/easysoftware/application/applyform/ApplyFormServiceImpl.java @@ -14,6 +14,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import com.easysoftware.application.applyform.dto.ApplyFormSearchAdminCondition; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; @@ -44,7 +45,7 @@ public class ApplyFormServiceImpl implements ApplyFormService { * @return ResponseEntity. */ @Override - public ResponseEntity searchApplyFromByMaintainer(ApplyFormSearchMaintainerCondition condition) { + public ResponseEntity searchApplyFromByMaintainer(ApplyFormSearchMaintainerCondition condition) { Map res = new HashMap<>(); if (condition.getName().equals("formPage")) { res = searchApplyFromByPage(condition); @@ -55,6 +56,18 @@ public class ApplyFormServiceImpl implements ApplyFormService { return ResultUtil.success(HttpStatus.OK, res); } + /** + * Search for apply form based on the provided search condition by admin. + * + * @param condition The search condition for querying apply form. + * @return ResponseEntity. + */ + @Override + public ResponseEntity searchApplyFromByAdmin(ApplyFormSearchAdminCondition condition) { + Map res = applyFormGateway.queryApplyFormByCondition(condition); + return ResultUtil.success(HttpStatus.OK, res); + } + /** * Search for apply form based on the provided page condition. * diff --git a/src/main/java/com/easysoftware/application/applyform/dto/ApplyFormSearchAdminCondition.java b/src/main/java/com/easysoftware/application/applyform/dto/ApplyFormSearchAdminCondition.java new file mode 100644 index 0000000000000000000000000000000000000000..6053a30aa80aecffa2e88417e3ca2753d21c8b5c --- /dev/null +++ b/src/main/java/com/easysoftware/application/applyform/dto/ApplyFormSearchAdminCondition.java @@ -0,0 +1,70 @@ +/* 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.applyform.dto; + +import com.easysoftware.common.constant.PackageConstant; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.Size; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.hibernate.validator.constraints.Range; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ApplyFormSearchAdminCondition { + /** + * Page number within the range of PackageConstant.MIN_PAGE_NUM to PackageConstant. + * MAX_PAGE_NUM, default value is 1. + */ + @Range(min = PackageConstant.MIN_PAGE_NUM, max = PackageConstant.MAX_PAGE_NUM) + @NotNull + private Integer pageNum = 1; + + /** + * Page size within the range of PackageConstant.MIN_PAGE_SIZE to PackageConstant. + * MAX_PAGE_SIZE, default value is 10. + */ + @Range(min = PackageConstant.MIN_PAGE_SIZE, max = PackageConstant.MAX_PAGE_SIZE) + @NotNull + private Integer pageSize = 10; + + /** + * Name (maximum length: PackageConstant.MAX_FIELD_LENGTH). + */ + @Size(max = PackageConstant.MAX_FIELD_LENGTH) + @Pattern(regexp = PackageConstant.VALID_STR_REG, message = PackageConstant.VALID_MESSAGE) + private String applyStatus; + + /** + * Name (maximum length: PackageConstant.MAX_FIELD_LENGTH). + */ + @Size(max = PackageConstant.MAX_FIELD_LENGTH) + @Pattern(regexp = PackageConstant.VALID_STR_REG, message = PackageConstant.VALID_MESSAGE) + private String repo; + + /** + * Name (maximum length: PackageConstant.MAX_FIELD_LENGTH). + */ + @Size(max = PackageConstant.MAX_FIELD_LENGTH) + @Pattern(regexp = PackageConstant.VALID_STR_REG, message = PackageConstant.VALID_MESSAGE) + private String metric; + + /** + * Time order. + */ + @Size(max = PackageConstant.MAX_FIELD_LENGTH) + @Pattern(regexp = PackageConstant.VALID_STR_REG, message = PackageConstant.VALID_MESSAGE) + private String timeOrder; + +} diff --git a/src/main/java/com/easysoftware/domain/applyform/gateway/ApplyFormGateway.java b/src/main/java/com/easysoftware/domain/applyform/gateway/ApplyFormGateway.java index f36fa80b1606f7c0277329f212b489611b603b05..4d825f9081b2a32016445e848e5a703fa32ce3d3 100644 --- a/src/main/java/com/easysoftware/domain/applyform/gateway/ApplyFormGateway.java +++ b/src/main/java/com/easysoftware/domain/applyform/gateway/ApplyFormGateway.java @@ -12,6 +12,7 @@ package com.easysoftware.domain.applyform.gateway; import java.util.Map; +import com.easysoftware.application.applyform.dto.ApplyFormSearchAdminCondition; import org.springframework.stereotype.Component; import com.easysoftware.application.applyform.dto.ApplyFormSearchMaintainerCondition; @@ -35,4 +36,13 @@ public interface ApplyFormGateway { * @return A map containing relevant information */ Map queryApplyFormByApplyId(Long applyId); + + + /** + * Query information based on the provided search condition. + * + * @param condition The search condition for querying apply form + * @return A map containing relevant information + */ + Map queryApplyFormByCondition(ApplyFormSearchAdminCondition 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 bb548b7368ebc1d1356d0601630bc36fdd22087a..4c3f9733a0ed3f294b1fd3539a759b4625f166aa 100644 --- a/src/main/java/com/easysoftware/infrastructure/applyform/gatewayimpl/ApplyFormGatewayImpl.java +++ b/src/main/java/com/easysoftware/infrastructure/applyform/gatewayimpl/ApplyFormGatewayImpl.java @@ -15,6 +15,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import com.easysoftware.application.applyform.dto.ApplyFormSearchAdminCondition; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -119,4 +120,54 @@ public class ApplyFormGatewayImpl implements ApplyFormGateway { return res; } + /** + * Query information based on the provided search condition. + * + * @param condition The search condition for querying apply form + * @return A map containing relevant information + */ + @Override + public Map queryApplyFormByCondition(ApplyFormSearchAdminCondition condition) { + int pageNum = condition.getPageNum(); + int pageSize = condition.getPageSize(); + Page page = new Page<>(pageNum, pageSize); + QueryWrapper wrapper = initWrapperByCondition(condition); + + IPage resPage = applyFormDOMapper.selectPage(page, wrapper); + long total = resPage.getTotal(); + List applyFormDOs = resPage.getRecords(); + List applyFormVOs = ApplyFormConvertor.toApplyFormVO(applyFormDOs); + + Map res = new HashMap<>(); + res.put("total", total); + res.put("list", applyFormVOs); + + return res; + } + + /** + * initWrapperByCondition. + * + * @param condition The search condition for querying apply form + * @return A QueryWrapper + */ + private QueryWrapper initWrapperByCondition(ApplyFormSearchAdminCondition condition) { + QueryWrapper wrapper = new QueryWrapper<>(); + if (condition.getApplyStatus() != null) { + wrapper.eq("apply_status", condition.getApplyStatus()); + } + if (condition.getRepo() != null) { + wrapper.eq("repo", condition.getRepo()); + } + if (condition.getMetric() != null) { + wrapper.eq("metric", condition.getMetric()); + } + if ("desc".equals(condition.getTimeOrder())) { + wrapper.orderByDesc("created_at"); + } else if ("asc".equals(condition.getTimeOrder())) { + wrapper.orderByAsc("created_at"); + } + return wrapper; + } + }