diff --git a/src/main/java/com/easysoftware/adapter/query/DomainPackageQueryAdapter.java b/src/main/java/com/easysoftware/adapter/query/DomainPackageQueryAdapter.java index b4a94c6a48f49334c9319d60a339987bafb1901d..ce38476c89a52138004d59438d8bfb746f52e271 100644 --- a/src/main/java/com/easysoftware/adapter/query/DomainPackageQueryAdapter.java +++ b/src/main/java/com/easysoftware/adapter/query/DomainPackageQueryAdapter.java @@ -1,17 +1,22 @@ package com.easysoftware.adapter.query; +import java.security.DrbgParameters.Reseed; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.easysoftware.application.domainpackage.DomainPackageService; +import com.easysoftware.application.domainpackage.dto.DomainColumnCondition; import com.easysoftware.application.domainpackage.dto.DomainSearchCondition; import jakarta.validation.Valid; import jakarta.validation.constraints.Size; +import okhttp3.Response; @RestController @RequestMapping("/domain") @@ -24,4 +29,11 @@ public class DomainPackageQueryAdapter { ResponseEntity res = domainService.searchDomain(condition); return res; } + + @GetMapping("/column") + public ResponseEntity queryColumn(@Valid DomainColumnCondition condition) { + ResponseEntity res = domainService.searchColumn(condition); + return res; + } + } diff --git a/src/main/java/com/easysoftware/application/domainpackage/DomainPackageService.java b/src/main/java/com/easysoftware/application/domainpackage/DomainPackageService.java index ab93c3e5368c33a65a79d12641841793c2aea264..117c61d7a01962b872c9bcf57626f63e8a04930a 100644 --- a/src/main/java/com/easysoftware/application/domainpackage/DomainPackageService.java +++ b/src/main/java/com/easysoftware/application/domainpackage/DomainPackageService.java @@ -2,8 +2,10 @@ package com.easysoftware.application.domainpackage; import org.springframework.http.ResponseEntity; +import com.easysoftware.application.domainpackage.dto.DomainColumnCondition; import com.easysoftware.application.domainpackage.dto.DomainSearchCondition; public interface DomainPackageService { ResponseEntity searchDomain(DomainSearchCondition condition); + ResponseEntity searchColumn(DomainColumnCondition condition); } diff --git a/src/main/java/com/easysoftware/application/domainpackage/DomainPackageServiceImpl.java b/src/main/java/com/easysoftware/application/domainpackage/DomainPackageServiceImpl.java index b00416c77eb89a7de787700147425496c58e3f99..2ac6d90581f4199a303832aa873e8e16b050dd5f 100644 --- a/src/main/java/com/easysoftware/application/domainpackage/DomainPackageServiceImpl.java +++ b/src/main/java/com/easysoftware/application/domainpackage/DomainPackageServiceImpl.java @@ -15,6 +15,7 @@ import org.springframework.stereotype.Service; import com.easysoftware.application.applicationpackage.ApplicationPackageService; import com.easysoftware.application.applicationpackage.dto.ApplicationPackageSearchCondition; import com.easysoftware.application.applicationpackage.vo.ApplicationPackageMenuVo; +import com.easysoftware.application.domainpackage.dto.DomainColumnCondition; import com.easysoftware.application.domainpackage.dto.DomainSearchCondition; import com.easysoftware.application.domainpackage.vo.DomainPackageMenuVo; import com.easysoftware.application.epkgpackage.EPKGPackageService; @@ -213,4 +214,17 @@ public class DomainPackageServiceImpl implements DomainPackageService { return res; } + + @Override + public ResponseEntity searchColumn(DomainColumnCondition condition) { + if ("rpmpkg".equals(condition.getName())) { + List res = rpmPackageGateway.queryColumn(condition.getColumn()); + return ResultUtil.success(HttpStatus.OK, res); + } else if ("epkgpkg".equals(condition.getName())) { + List res = epkgPackageGateway.queryColumn(condition.getColumn()); + return ResultUtil.success(HttpStatus.OK, res); + } else { + return null; + } + } } diff --git a/src/main/java/com/easysoftware/application/domainpackage/dto/DomainColumnCondition.java b/src/main/java/com/easysoftware/application/domainpackage/dto/DomainColumnCondition.java new file mode 100644 index 0000000000000000000000000000000000000000..16a116aae601cd87c8446814b8032635b4ff78f1 --- /dev/null +++ b/src/main/java/com/easysoftware/application/domainpackage/dto/DomainColumnCondition.java @@ -0,0 +1,28 @@ +package com.easysoftware.application.domainpackage.dto; + +import org.hibernate.validator.constraints.Range; + +import com.easysoftware.common.constant.PackageConstant; + +import jakarta.validation.constraints.Size; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class DomainColumnCondition { + @Range(min = PackageConstant.MIN_PAGE_NUM, max = PackageConstant.MAX_PAGE_NUM) + private Integer pageNum = 1; + + @Range(min = PackageConstant.MIN_PAGE_SIZE, max = PackageConstant.MAX_PAGE_SIZE) + private Integer pageSize = 10; + + @Size(max = 50) + private String name; + + @Size(max = 50) + private String column; +} diff --git a/src/main/java/com/easysoftware/application/domainpackage/dto/DomainSearchCondition.java b/src/main/java/com/easysoftware/application/domainpackage/dto/DomainSearchCondition.java index 01ed9d94521f5e3185648e18a3b04fb7e1498657..a3a44eea283f584b9425cabe5dab5b456ae3368e 100644 --- a/src/main/java/com/easysoftware/application/domainpackage/dto/DomainSearchCondition.java +++ b/src/main/java/com/easysoftware/application/domainpackage/dto/DomainSearchCondition.java @@ -4,6 +4,7 @@ import org.hibernate.validator.constraints.Range; import com.easysoftware.common.constant.PackageConstant; import com.easysoftware.common.exception.enumvalid.AppCategoryEnum; +import com.easysoftware.common.exception.enumvalid.DomainNameEnum; import com.easysoftware.common.exception.enumvalid.EnumValue; import com.easysoftware.common.exception.enumvalid.TimeOrderEnum; @@ -17,7 +18,7 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor public class DomainSearchCondition { - @Size(max = 50) + @EnumValue(enumClass = DomainNameEnum.class, enumMethod = "isValidCategory") private String name; @Size(max = 50) diff --git a/src/main/java/com/easysoftware/common/entity/MessageCode.java b/src/main/java/com/easysoftware/common/entity/MessageCode.java index 4cf0d1804cfd68c2b701d646aedf3a4694b5eba1..7120984286c88850261fcb747badf863d55184e2 100644 --- a/src/main/java/com/easysoftware/common/entity/MessageCode.java +++ b/src/main/java/com/easysoftware/common/entity/MessageCode.java @@ -27,6 +27,7 @@ public enum MessageCode { EC0008("EC0008", "Item existed", "项目已存在"), EC0009("EC0009", "Item not existed", "项目不存在"), EC00010("EC00010", "Request exceeds the limit", "请求超过限制"), + EC00011("EC00011", "Failed to retrieve field using reflection", "无法通过反射获取字段"), // self service exception ES0001("ES0001", "Internal Server Error", "服务异常"); diff --git a/src/main/java/com/easysoftware/common/exception/GlobalExceptionHandler.java b/src/main/java/com/easysoftware/common/exception/GlobalExceptionHandler.java index 0c562630a6a23927a4a859930cb086419c4ceeac..b145e2b79ff89a4a60688fad8247a8419171609f 100644 --- a/src/main/java/com/easysoftware/common/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/easysoftware/common/exception/GlobalExceptionHandler.java @@ -21,7 +21,6 @@ public class GlobalExceptionHandler { @ExceptionHandler(MethodArgumentNotValidException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) public ResponseEntity exception(MethodArgumentNotValidException e) { - System.out.println(e); logger.error(MessageCode.EC0002.getMsgEn()); return ResultUtil.fail(HttpStatus.BAD_REQUEST, MessageCode.EC0002); } diff --git a/src/main/java/com/easysoftware/common/exception/enumvalid/DomainNameEnum.java b/src/main/java/com/easysoftware/common/exception/enumvalid/DomainNameEnum.java new file mode 100644 index 0000000000000000000000000000000000000000..dad1ac2cf90dae355176a86e5787534954a02a3a --- /dev/null +++ b/src/main/java/com/easysoftware/common/exception/enumvalid/DomainNameEnum.java @@ -0,0 +1,27 @@ +package com.easysoftware.common.exception.enumvalid; + +public enum DomainNameEnum { + APPPKG("apppkg"), + EPKGPKG("epkgpkg"), + RPMPKG("rpmpkg"), + ALL("all"); + + private String alias; + + DomainNameEnum(String alias) { + this.alias = alias; + } + + public String getAlias() { + return this.alias; + } + + public static boolean isValidCategory(String alias) { + for (DomainNameEnum categoryEnum : DomainNameEnum.values()) { + if (categoryEnum.getAlias().equals(alias)) { + return true; + } + } + return false; + } +} diff --git a/src/main/java/com/easysoftware/common/exception/enumvalid/EnumValue.java b/src/main/java/com/easysoftware/common/exception/enumvalid/EnumValue.java index b7a7261019936660dcbb541c1d38ef433d9242f4..09c42598c09204034e9a468d2e1bbd567c913236 100644 --- a/src/main/java/com/easysoftware/common/exception/enumvalid/EnumValue.java +++ b/src/main/java/com/easysoftware/common/exception/enumvalid/EnumValue.java @@ -55,7 +55,7 @@ public @interface EnumValue { try { Method method = enumClass.getMethod(enumMethod, valueClass); if (!Boolean.TYPE.equals(method.getReturnType()) && !Boolean.class.equals(method.getReturnType())) { - throw new com.easysoftware.common.exception.EnumValidException(); + throw new EnumValidException(); } if(!Modifier.isStatic(method.getModifiers())) { diff --git a/src/main/java/com/easysoftware/common/utils/HttpClientUtil.java b/src/main/java/com/easysoftware/common/utils/HttpClientUtil.java index 84666e92477b46a6df81ced9b8d31e2a43975b89..bba20a6a2905ea02bb2cbcfa7bdc2829f3d5cf4a 100644 --- a/src/main/java/com/easysoftware/common/utils/HttpClientUtil.java +++ b/src/main/java/com/easysoftware/common/utils/HttpClientUtil.java @@ -14,6 +14,8 @@ import org.apache.http.util.EntityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.easysoftware.common.entity.MessageCode; + public class HttpClientUtil { private static final Logger logger = LoggerFactory.getLogger(LogUtil.class); @@ -32,7 +34,7 @@ public class HttpClientUtil { reader.close(); return response.toString(); } catch (Exception e) { - logger.error("exception", e); + logger.error(MessageCode.EC0001.getMsgEn(), e); } return null; } @@ -58,7 +60,7 @@ public class HttpClientUtil { reader.close(); return response.toString(); } catch (Exception e) { - logger.error("exception", e); + logger.error(MessageCode.EC0001.getMsgEn(), e); } return null; } @@ -71,7 +73,7 @@ public class HttpClientUtil { String responseBody = EntityUtils.toString(response.getEntity()); return responseBody; } catch (Exception e) { - logger.error("exception", e); + logger.error(MessageCode.EC0001.getMsgEn(), e); } return null; } diff --git a/src/main/java/com/easysoftware/common/utils/QueryWrapperUtil.java b/src/main/java/com/easysoftware/common/utils/QueryWrapperUtil.java index 70f693c25a2e4f66268794ecf3c9333deca8a77c..6d3990c8c68e5802d55bbc4eff834f468173e692 100644 --- a/src/main/java/com/easysoftware/common/utils/QueryWrapperUtil.java +++ b/src/main/java/com/easysoftware/common/utils/QueryWrapperUtil.java @@ -3,13 +3,19 @@ package com.easysoftware.common.utils; import java.lang.reflect.Field; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.easysoftware.common.entity.MessageCode; import com.easysoftware.common.exception.enumvalid.TimeOrderEnum; import com.power.common.util.StringUtil; + public class QueryWrapperUtil { - public static QueryWrapper createQueryWrapper(T t, U u, String updateAt) { + private static final Logger logger = LoggerFactory.getLogger(QueryWrapperUtil.class); + + public static QueryWrapper createQueryWrapper(T t, U u, String updateAt) { QueryWrapper wrapper = new QueryWrapper<>(); Field[] fields = u.getClass().getDeclaredFields(); @@ -20,6 +26,7 @@ public class QueryWrapperUtil { try { value = field.get(u); } catch (Exception e) { + logger.error(MessageCode.EC00011.getMsgEn(), e); } if (! (value instanceof String)) { continue; diff --git a/src/main/java/com/easysoftware/domain/epkgpackage/gateway/EPKGPackageGateway.java b/src/main/java/com/easysoftware/domain/epkgpackage/gateway/EPKGPackageGateway.java index a9bbed1093f7334243f26c582715da6aba510a4b..27341fa0452a9e799a9db25037167299958988c8 100644 --- a/src/main/java/com/easysoftware/domain/epkgpackage/gateway/EPKGPackageGateway.java +++ b/src/main/java/com/easysoftware/domain/epkgpackage/gateway/EPKGPackageGateway.java @@ -1,5 +1,6 @@ package com.easysoftware.domain.epkgpackage.gateway; +import java.util.List; import java.util.Map; import com.easysoftware.application.epkgpackage.dto.EPKGPackageSearchCondition; @@ -17,4 +18,5 @@ public interface EPKGPackageGateway { boolean delete(String id); Map queryDetailByName(EPKGPackageSearchCondition condition); Map queryMenuByName(EPKGPackageSearchCondition condition); + List queryColumn(String column); } diff --git a/src/main/java/com/easysoftware/domain/rpmpackage/gateway/RPMPackageGateway.java b/src/main/java/com/easysoftware/domain/rpmpackage/gateway/RPMPackageGateway.java index 93da221c636637e28da0c5607516ab709dc294a4..8d45e66b522dc7cb9339bad983d8088b4c057e46 100644 --- a/src/main/java/com/easysoftware/domain/rpmpackage/gateway/RPMPackageGateway.java +++ b/src/main/java/com/easysoftware/domain/rpmpackage/gateway/RPMPackageGateway.java @@ -16,4 +16,5 @@ public interface RPMPackageGateway { boolean delete(String id); Map queryDetailByName(RPMPackageSearchCondition condition); Map queryMenuByName(RPMPackageSearchCondition condition); + List queryColumn(String column); } diff --git a/src/main/java/com/easysoftware/infrastructure/epkgpackage/gatewayimpl/EPKGPackageGatewayImpl.java b/src/main/java/com/easysoftware/infrastructure/epkgpackage/gatewayimpl/EPKGPackageGatewayImpl.java index c74b4c688f0a6f4073aa88d7055d52c5e1d7043c..7c9ea88a19eeca01b0cc72a9007f295c9215bd3c 100644 --- a/src/main/java/com/easysoftware/infrastructure/epkgpackage/gatewayimpl/EPKGPackageGatewayImpl.java +++ b/src/main/java/com/easysoftware/infrastructure/epkgpackage/gatewayimpl/EPKGPackageGatewayImpl.java @@ -130,4 +130,13 @@ public class EPKGPackageGatewayImpl implements EPKGPackageGateway{ Page page = new Page<>(pageNum, pageSize); return page; } + + @Override + public List queryColumn(String column) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("distinct " + column); + List rpmColumn = ePKGPkgMapper.selectList(wrapper); + List res = EPKGPackageConverter.toColumn(rpmColumn, column); + return res; + } } diff --git a/src/main/java/com/easysoftware/infrastructure/epkgpackage/gatewayimpl/converter/EPKGPackageConverter.java b/src/main/java/com/easysoftware/infrastructure/epkgpackage/gatewayimpl/converter/EPKGPackageConverter.java index cac2f84572c0137ae56876ef14553d3bfcdbbdd7..7de4590a3305a25f65dbc79ad1d51fd540255503 100644 --- a/src/main/java/com/easysoftware/infrastructure/epkgpackage/gatewayimpl/converter/EPKGPackageConverter.java +++ b/src/main/java/com/easysoftware/infrastructure/epkgpackage/gatewayimpl/converter/EPKGPackageConverter.java @@ -1,15 +1,20 @@ package com.easysoftware.infrastructure.epkgpackage.gatewayimpl.converter; +import java.lang.reflect.Field; import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import com.easysoftware.application.epkgpackage.vo.EPKGPackageDetailVo; import com.easysoftware.application.epkgpackage.vo.EPKGPackageMenuVo; import com.easysoftware.application.rpmpackage.vo.RPMPackageDetailVo; import com.easysoftware.application.rpmpackage.vo.RPMPackageMenuVo; +import com.easysoftware.common.entity.MessageCode; +import com.easysoftware.common.utils.QueryWrapperUtil; import com.easysoftware.common.utils.UuidUtil; import com.easysoftware.domain.epkgpackage.EPKGPackage; import com.easysoftware.domain.rpmpackage.RPMPackage; @@ -17,6 +22,9 @@ import com.easysoftware.infrastructure.epkgpackage.gatewayimpl.dataobject.EPKGPa import com.easysoftware.infrastructure.rpmpackage.gatewayimpl.dataobject.RPMPackageDO; public class EPKGPackageConverter { + + private static final Logger logger = LoggerFactory.getLogger(EPKGPackageConverter.class); + public static List toMenu(List rPMPkgDOs) { List res = new ArrayList<>(); for (EPKGPackageDO rpm: rPMPkgDOs) { @@ -28,6 +36,25 @@ public class EPKGPackageConverter { return res; } + public static List toColumn(List epkgDOs, String column) { + List res = new ArrayList<>(); + try { + Field field = EPKGPackageDO.class.getDeclaredField(column); + field.setAccessible(true); + for (EPKGPackageDO epkgDO : epkgDOs) { + Object obj = field.get(epkgDO); + if (! (obj instanceof String)) { + continue; + } + String value = (String) field.get(epkgDO); + res.add(value); + } + } catch (Exception e) { + logger.error(MessageCode.EC00011.getMsgEn(), e); + } + return res; + } + public static List toDetail(List rPMPkgDOs) { List res = new ArrayList<>(); for (EPKGPackageDO rpm: rPMPkgDOs) { diff --git a/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/RPMPackageGatewayImpl.java b/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/RPMPackageGatewayImpl.java index 8a327aff4d150dd32ba12cd147337a38ed398808..98ad206a9b4083fcd5f0f9481ddcb886e48712df 100644 --- a/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/RPMPackageGatewayImpl.java +++ b/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/RPMPackageGatewayImpl.java @@ -131,6 +131,12 @@ public class RPMPackageGatewayImpl implements RPMPackageGateway { return page; } - - + @Override + public List queryColumn(String column) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("distinct " + column); + List rpmColumn = rPMPkgMapper.selectList(wrapper); + List res = RPMPackageConverter.toColumn(rpmColumn, column); + return res; + } } diff --git a/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/converter/RPMPackageConverter.java b/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/converter/RPMPackageConverter.java index f91ca1bc2537d58ad9627f1900c03f9e8de6886d..0cc8a079d5dcc6b4405d2dad7cf1ed8fd17114e3 100644 --- a/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/converter/RPMPackageConverter.java +++ b/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/converter/RPMPackageConverter.java @@ -8,26 +8,51 @@ import java.util.Date; import java.util.List; import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.easysoftware.application.rpmpackage.vo.RPMPackageDetailVo; import com.easysoftware.application.rpmpackage.vo.RPMPackageMenuVo; +import com.easysoftware.common.entity.MessageCode; import com.easysoftware.common.exception.enumvalid.TimeOrderEnum; import com.easysoftware.common.utils.UuidUtil; import com.easysoftware.domain.applicationpackage.ApplicationPackage; import com.easysoftware.domain.rpmpackage.RPMPackage; import com.easysoftware.infrastructure.applicationpackage.gatewayimpl.dataobject.ApplicationPackageDO; +import com.easysoftware.infrastructure.epkgpackage.gatewayimpl.converter.EPKGPackageConverter; import com.easysoftware.infrastructure.rpmpackage.gatewayimpl.dataobject.RPMPackageDO; import com.power.common.util.StringUtil; public class RPMPackageConverter { + private static final Logger logger = LoggerFactory.getLogger(RPMPackageConverter.class); + public static RPMPackage toEntity(RPMPackageDO rPMPkgDO) { RPMPackage rPMPkg = new RPMPackage(); BeanUtils.copyProperties(rPMPkgDO, rPMPkg); return rPMPkg; } + public static List toColumn(List rPMPkgDOs, String column) { + List res = new ArrayList<>(); + try { + Field field = RPMPackageDO.class.getDeclaredField(column); + field.setAccessible(true); + for (RPMPackageDO rPMPkgDO : rPMPkgDOs) { + Object obj = field.get(rPMPkgDO); + if (! (obj instanceof String)) { + continue; + } + String value = (String) field.get(rPMPkgDO); + res.add(value); + } + } catch (Exception e) { + logger.error(MessageCode.EC00011.getMsgEn(), e); + } + return res; + } + public static List toEntity(List rPMPkgDOs) { List res = new ArrayList<>(); for (RPMPackageDO rPMPkgDO : rPMPkgDOs) {