diff --git a/src/main/java/com/easysoftware/application/domainpackage/DomainPackageServiceImpl.java b/src/main/java/com/easysoftware/application/domainpackage/DomainPackageServiceImpl.java index 36f290b35eaa754f93783ce99c52e9058ad7c255..8997a76cb909a6ecb153fa614adbc6af1c9c0c53 100644 --- a/src/main/java/com/easysoftware/application/domainpackage/DomainPackageServiceImpl.java +++ b/src/main/java/com/easysoftware/application/domainpackage/DomainPackageServiceImpl.java @@ -15,11 +15,15 @@ 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.DomainSearchCondition; +import com.easysoftware.application.domainpackage.vo.DomainPackageMenuVo; import com.easysoftware.application.rpmpackage.RPMPackageService; import com.easysoftware.application.rpmpackage.dto.RPMPackageSearchCondition; import com.easysoftware.application.rpmpackage.vo.RPMPackageMenuVo; import com.easysoftware.common.exception.enumvalid.AppCategoryEnum; import com.easysoftware.common.utils.ResultUtil; +import com.easysoftware.domain.rpmpackage.RPMPackageUnique; +import com.easysoftware.domain.rpmpackage.gateway.RPMPackageGateway; + import jakarta.annotation.Resource; @Service @@ -30,6 +34,9 @@ public class DomainPackageServiceImpl implements DomainPackageService { @Resource RPMPackageService rPMPkgService; + @Resource + RPMPackageGateway rpmPackageGateway; + @Override public ResponseEntity searchDomain(DomainSearchCondition condition) { if ("apppkg".equals(condition.getName())) { @@ -49,10 +56,70 @@ public class DomainPackageServiceImpl implements DomainPackageService { BeanUtils.copyProperties(condition, rPMCon); Map appMenuList = rPMPkgService.queryAllRPMPkgMenu(rPMCon); return ResultUtil.success(HttpStatus.OK, appMenuList); + } else if ("all".equals(condition.getName())) { + ResponseEntity res = searchAllEntity(condition); + return res; } return null; } + private ResponseEntity searchAllEntity(DomainSearchCondition condition) { + ApplicationPackageSearchCondition appCon = new ApplicationPackageSearchCondition(); + BeanUtils.copyProperties(condition, appCon); + Map map = appPkgService.queryAllAppPkgMenu(appCon); + List appMenus = (List) map.get("list"); + + List domainMenus = new ArrayList<>(); + for (ApplicationPackageMenuVo app: appMenus) { + DomainPackageMenuVo domain = new DomainPackageMenuVo(); + BeanUtils.copyProperties(app, domain); + domain.setTags(new ArrayList<>(app.getTags())); + + String name = domain.getName(); + + // search RPM + RPMPackageUnique unique = new RPMPackageUnique(); + unique.setName(name); + boolean rpmExisted = rpmPackageGateway.existRPM(unique); + if (rpmExisted) { + domain.getTags().add("RPM"); + } + domainMenus.add(domain); + + } + + List> appCate = groupDomainByCategory(domainMenus); + Map res = Map.ofEntries( + Map.entry("total", map.get("total")), + Map.entry("list", appCate) + ); + return ResultUtil.success(HttpStatus.OK, res); + + } + + + private List> groupDomainByCategory(List menuList) { + Map> map = new HashMap<>(); + for (AppCategoryEnum categoryEnum : AppCategoryEnum.values()) { + String category = categoryEnum.getAlias(); + map.put(category, new ArrayList<>()); + } + + for (DomainPackageMenuVo menu: menuList) { + map.get(menu.getCategory()).add(menu); + } + + List> res = new ArrayList<>(); + for (String category: map.keySet()) { + Map cMap = new HashMap<>(); + cMap.put("name", category); + cMap.put("children", map.get(category)); + res.add(cMap); + } + + return res; + } + private List> groupByCategory(List menuList) { Map> map = new HashMap<>(); for (AppCategoryEnum categoryEnum : AppCategoryEnum.values()) { diff --git a/src/main/java/com/easysoftware/application/domainpackage/vo/DomainPackageMenuVo.java b/src/main/java/com/easysoftware/application/domainpackage/vo/DomainPackageMenuVo.java new file mode 100644 index 0000000000000000000000000000000000000000..2e9d2e154a6092e0fb1efbc818f7159f345c12f9 --- /dev/null +++ b/src/main/java/com/easysoftware/application/domainpackage/vo/DomainPackageMenuVo.java @@ -0,0 +1,17 @@ +package com.easysoftware.application.domainpackage.vo; + +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DomainPackageMenuVo { + private String category; + private String name; + private String description; + private String iconUrl; + private List tags; +}