diff --git a/src/main/java/com/easysoftware/application/rpmpackage/RPMPackageServiceImpl.java b/src/main/java/com/easysoftware/application/rpmpackage/RPMPackageServiceImpl.java index 04404a0a2ea4fe8a1a2f47c1bb3afda9c361ddbe..e7ba7925d2faae1894dfb50493eeb97b83f89139 100644 --- a/src/main/java/com/easysoftware/application/rpmpackage/RPMPackageServiceImpl.java +++ b/src/main/java/com/easysoftware/application/rpmpackage/RPMPackageServiceImpl.java @@ -19,6 +19,7 @@ import com.easysoftware.application.rpmpackage.vo.RPMPackageDomainVo; import com.easysoftware.common.exception.NoneResException; import com.easysoftware.common.exception.ParamErrorException; import com.easysoftware.common.utils.ResultUtil; +import com.easysoftware.domain.oepackage.gateway.OEPackageGateway; import com.easysoftware.domain.rpmpackage.gateway.RPMPackageGateway; import com.easysoftware.infrastructure.mapper.RPMPackageDOMapper; import com.easysoftware.infrastructure.rpmpackage.gatewayimpl.dataobject.RPMPackageDO; @@ -43,6 +44,13 @@ public class RPMPackageServiceImpl extends ServiceImpl queryNewstRpmVersion(RPMPackageNameSearchCondition condition) { Map res = rPMPkgGateway.queryNewstRpmVersion(condition); + + if (res.get("total") != null && !res.get("total").equals(Integer.valueOf(0))) { + return ResultUtil.success(HttpStatus.OK, res); + } + + res = oepkgGateway.queryNewstRpmVersion(condition); return ResultUtil.success(HttpStatus.OK, res); } diff --git a/src/main/java/com/easysoftware/domain/oepackage/gateway/OEPackageGateway.java b/src/main/java/com/easysoftware/domain/oepackage/gateway/OEPackageGateway.java index 52c61db8d7872fde4887833c5369d6e1673ef89f..b9565693a04835f02aa2f761ae7378196a357aaa 100644 --- a/src/main/java/com/easysoftware/domain/oepackage/gateway/OEPackageGateway.java +++ b/src/main/java/com/easysoftware/domain/oepackage/gateway/OEPackageGateway.java @@ -17,6 +17,7 @@ import java.util.Map; import com.easysoftware.application.oepackage.dto.OEPackageSearchCondition; import com.easysoftware.application.oepackage.dto.OepkgNameSearchCondition; import com.easysoftware.application.oepackage.vo.OEPackageDetailVo; +import com.easysoftware.application.rpmpackage.dto.RPMPackageNameSearchCondition; public interface OEPackageGateway { /** @@ -73,4 +74,12 @@ public interface OEPackageGateway { * @return pkg nums of arch. */ Map queryArchNum(String os); + + /** + * Query the RPM newest version based on the provided search condition. + * + * @param condition The search condition for querying RPM newest version + * @return A map containing RPM newest version + */ + Map queryNewstRpmVersion(RPMPackageNameSearchCondition condition); } diff --git a/src/main/java/com/easysoftware/infrastructure/oepkg/gatewalmpl/OEPackageGatewayImpl.java b/src/main/java/com/easysoftware/infrastructure/oepkg/gatewalmpl/OEPackageGatewayImpl.java index 61e0a38725a53d8dc418b1fbcfb7c7759a88c6cf..78023b06d0c835f1d22ac2da76b67a0e2da5c76b 100644 --- a/src/main/java/com/easysoftware/infrastructure/oepkg/gatewalmpl/OEPackageGatewayImpl.java +++ b/src/main/java/com/easysoftware/infrastructure/oepkg/gatewalmpl/OEPackageGatewayImpl.java @@ -20,6 +20,9 @@ import com.easysoftware.application.oepackage.dto.OepkgNameSearchCondition; import com.easysoftware.application.oepackage.vo.OEPackageDetailVo; import com.easysoftware.application.oepackage.vo.OEPackageMenuVo; import com.easysoftware.application.oepackage.vo.OepkgEulerVersionVo; +import com.easysoftware.application.rpmpackage.dto.RPMPackageNameSearchCondition; +import com.easysoftware.application.rpmpackage.vo.RPMPackageNewestVersionVo; +import com.easysoftware.application.rpmpackage.vo.RPMPackgeVersionVo; import com.easysoftware.common.exception.ParamErrorException; import com.easysoftware.common.utils.ClassField; import com.easysoftware.common.utils.QueryWrapperUtil; @@ -27,6 +30,7 @@ import com.easysoftware.domain.oepackage.gateway.OEPackageGateway; import com.easysoftware.infrastructure.mapper.OEPackageDOMapper; import com.easysoftware.infrastructure.oepkg.gatewalmpl.coverter.OEPackageConverter; import com.easysoftware.infrastructure.oepkg.gatewalmpl.dataobject.OepkgDO; +import com.easysoftware.infrastructure.rpmpackage.gatewayimpl.converter.RPMPackageConverter; import com.power.common.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.BadSqlGrammarException; @@ -233,4 +237,29 @@ public class OEPackageGatewayImpl implements OEPackageGateway { res.put("type", "oepkg"); return res; } + + /** + * Query the RPM newest version based on the provided search condition. + * + * @param condition The search condition for querying a part of the RPM + * newest version + * @return A map containing relevant information + */ + @Override + public Map queryNewstRpmVersion(RPMPackageNameSearchCondition condition) { + QueryWrapper wrapper = QueryWrapperUtil.createQueryWrapper(new OepkgDO(), + condition, ""); + RPMPackgeVersionVo pkgVo = new RPMPackgeVersionVo(); + List columns = ClassField.getFieldNames(pkgVo); + if (condition.getName() != null) { + wrapper.eq("name", condition.getName().toLowerCase()); + } + wrapper.select(columns); + List rpmList = oEPkgMapper.selectList(wrapper); + List versions = RPMPackageConverter.toRPMVersionFromOepkg(rpmList); + Map res = Map.ofEntries( + Map.entry("total", versions.size()), + Map.entry("list", versions)); + 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 83ce1cfc4d1f82ff74b54261bba6d81b35703148..93651722fb19865368766c75aecd27763d8256fd 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 @@ -19,6 +19,7 @@ import com.easysoftware.application.rpmpackage.vo.RPMPackageNewestVersionVo; import com.easysoftware.common.entity.MessageCode; import com.easysoftware.common.utils.SortUtil; import com.easysoftware.domain.rpmpackage.RPMPackage; +import com.easysoftware.infrastructure.oepkg.gatewalmpl.dataobject.OepkgDO; import com.easysoftware.infrastructure.rpmpackage.gatewayimpl.dataobject.RPMPackageDO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -26,6 +27,7 @@ import org.springframework.beans.BeanUtils; import java.lang.reflect.Field; import java.util.ArrayList; +import java.util.Collections; import java.util.List; public final class RPMPackageConverter { @@ -202,6 +204,10 @@ public final class RPMPackageConverter { * @return A list of RPMPackageNewestVersionVo view objects. */ public static List toRPMVersion(final List rpmPkgDOs) { + if (rpmPkgDOs == null || rpmPkgDOs.isEmpty()) { + return Collections.emptyList(); + } + List res = new ArrayList<>(); String newestVersion = ""; String os = ""; @@ -223,4 +229,28 @@ public final class RPMPackageConverter { res.add(version); return res; } + + /** + * Converts a list of OepkgDO objects to a list of + * RPMPackageNewestVersionVo + * view + * objects. + * + * @param oList The list of OepkgDO objects to convert. + * @return A list of RPMPackageNewestVersionVo view objects. + */ + public static List toRPMVersionFromOepkg(final List oList) { + if (oList == null || oList.isEmpty()) { + return Collections.emptyList(); + } + + List rList = new ArrayList<>(); + for (OepkgDO o : oList) { + RPMPackageDO r = new RPMPackageDO(); + BeanUtils.copyProperties(o, r); + rList.add(r); + } + + return toRPMVersion(rList); + } }