diff --git a/pom.xml b/pom.xml index 6e2715f84244f659760d3606e6c4314c15937ebf..5e27f0772f2b9afaa7bcc78245de4bb8a7c2dd61 100644 --- a/pom.xml +++ b/pom.xml @@ -97,6 +97,12 @@ test + + com.github.shalousun + common-util + 1.9.2 + + diff --git a/src/main/java/com/easysoftware/adapter/execute/RPMPackageExecuteAdapter.java b/src/main/java/com/easysoftware/adapter/execute/RPMPackageExecuteAdapter.java index 870a857c995469871266b9ca07a9d3f0da642535..ebb1e144bae6197476111eef5f1baf33377f20b1 100644 --- a/src/main/java/com/easysoftware/adapter/execute/RPMPackageExecuteAdapter.java +++ b/src/main/java/com/easysoftware/adapter/execute/RPMPackageExecuteAdapter.java @@ -35,9 +35,9 @@ public class RPMPackageExecuteAdapter { return res; } - @DeleteMapping(value = "/{names}") - public ResponseEntity deleteRPMPkg(@PathVariable List names) { - ResponseEntity res = rPMPkgService.deleteRPMPkg(names); + @DeleteMapping(value = "/{ids}") + public ResponseEntity deleteRPMPkg(@PathVariable List ids) { + ResponseEntity res = rPMPkgService.deleteRPMPkg(ids); return res; } } diff --git a/src/main/java/com/easysoftware/application/rpmpackage/RPMPackageServiceImpl.java b/src/main/java/com/easysoftware/application/rpmpackage/RPMPackageServiceImpl.java index dc9f7eb95fa44fd6ef04ea293488d52638ec721b..8da38ae08df1bd028aeee32bf1ef647d1c294825 100644 --- a/src/main/java/com/easysoftware/application/rpmpackage/RPMPackageServiceImpl.java +++ b/src/main/java/com/easysoftware/application/rpmpackage/RPMPackageServiceImpl.java @@ -3,10 +3,12 @@ package com.easysoftware.application.rpmpackage; import java.util.ArrayList; import java.util.List; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; +import org.springframework.web.bind.MethodArgumentNotValidException; import com.easysoftware.application.rpmpackage.dto.InputRPMPackage; import com.easysoftware.application.rpmpackage.dto.RPMPackageSearchCondition; @@ -15,6 +17,7 @@ import com.easysoftware.common.utils.ResultUtil; import com.easysoftware.domain.applicationpackage.ApplicationPackage; import com.easysoftware.domain.applicationpackage.gateway.ApplicationPackageGateway; import com.easysoftware.domain.rpmpackage.RPMPackage; +import com.easysoftware.domain.rpmpackage.RPMPackageUnique; import com.easysoftware.domain.rpmpackage.gateway.RPMPackageGateway; import jakarta.annotation.Resource; @@ -25,32 +28,37 @@ public class RPMPackageServiceImpl implements RPMPackageService { RPMPackageGateway rPMPkgGateway; @Override - public ResponseEntity deleteRPMPkg(List names) { + public ResponseEntity deleteRPMPkg(List ids) { List existedNames = new ArrayList<>(); - for (String name : names) { - boolean found = rPMPkgGateway.existRPM(name); + for (String id : ids) { + boolean found = rPMPkgGateway.existRPM(id); if (found) { - existedNames.add(name); + existedNames.add(id); } } List deletedNames = new ArrayList<>(); - for (String name : existedNames) { - boolean deleted = rPMPkgGateway.delete(name); + for (String id : existedNames) { + boolean deleted = rPMPkgGateway.delete(id); if (deleted) { - deletedNames.add(name); + deletedNames.add(id); } } String msg = String.format("请求删除的数据: %s, 在数据库中的数据: %s, 成功删除的数据: %s" - , names.toString(), existedNames.toString(), deletedNames.toString()); + , ids.toString(), existedNames.toString(), deletedNames.toString()); return ResultUtil.success(HttpStatus.OK); } @Override public ResponseEntity insertRPMPkg(InputRPMPackage inputrPMPackage) { + if (StringUtils.isNotBlank(inputrPMPackage.getId())) { + return ResultUtil.fail(HttpStatus.BAD_REQUEST, MessageCode.EC0002); + } // 数据库中是否已存在该包 - boolean found = rPMPkgGateway.existRPM(inputrPMPackage.getName()); + RPMPackageUnique unique = new RPMPackageUnique(); + BeanUtils.copyProperties(inputrPMPackage, unique); + boolean found = rPMPkgGateway.existRPM(unique); if (found) { return ResultUtil.fail(HttpStatus.BAD_REQUEST, MessageCode.EC0008); } @@ -72,8 +80,11 @@ public class RPMPackageServiceImpl implements RPMPackageService { @Override public ResponseEntity updateRPMPkg(InputRPMPackage inputrPMPackage) { + if (StringUtils.isBlank(inputrPMPackage.getId())) { + return ResultUtil.fail(HttpStatus.BAD_REQUEST, MessageCode.EC0002); + } // 数据库中是否已存在该包 - boolean found = rPMPkgGateway.existRPM(inputrPMPackage.getName()); + boolean found = rPMPkgGateway.existRPM(inputrPMPackage.getId()); if (!found) { return ResultUtil.fail(HttpStatus.BAD_REQUEST, MessageCode.EC0009); } diff --git a/src/main/java/com/easysoftware/application/rpmpackage/dto/InputRPMPackage.java b/src/main/java/com/easysoftware/application/rpmpackage/dto/InputRPMPackage.java index 719e9b0db32629fb00d499fa7f3248d8de5d8986..1d6072951162c8314a2a513d9bc0dc6f47b8a0de 100644 --- a/src/main/java/com/easysoftware/application/rpmpackage/dto/InputRPMPackage.java +++ b/src/main/java/com/easysoftware/application/rpmpackage/dto/InputRPMPackage.java @@ -1,5 +1,7 @@ package com.easysoftware.application.rpmpackage.dto; +import com.gitee.sunchenbin.mybatis.actable.constants.MySqlTypeConstant; + import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.Size; import lombok.AllArgsConstructor; @@ -15,86 +17,100 @@ public class InputRPMPackage { @Size(max = 255, message = "the length of sizeInstalled can not exceed 255") private String sizeInstalled; - + @Size(max = 255, message = "the length of timeFile can not exceed 255") private String timeFile; - + @Size(max = 255, message = "the length of sizePackage can not exceed 255") private String sizePackage; - @Size(max = 5000, message = "the length of description can not exceed 5000") + @Size(max = 6000, message = "the length of description can not exceed 6000") private String description; - + @Size(max = 255, message = "the length of checksumPkgid can not exceed 255") private String checksumPkgid; - + @Size(max = 255, message = "the length of locationHref can not exceed 255") private String locationHref; - + @Size(max = 255, message = "the length of rpmBuildhost can not exceed 255") private String rpmBuildhost; - + @Size(max = 255, message = "the length of checksumType can not exceed 255") private String checksumType; - + @Size(max = 255, message = "the length of sizeArchive can not exceed 255") private String sizeArchive; - + @Size(max = 255, message = "the length of rpmVendor can not exceed 255") private String rpmVendor; - + @Size(max = 255, message = "the length of checksum can not exceed 255") private String checksum; - + @Size(max = 255, message = "the length of rpmGroup can not exceed 255") private String rpmGroup; @Size(max = 255, message = "the length of headerStart can not exceed 255") private String headerStart; - + @Size(max = 255, message = "the length of summary can not exceed 255") private String summary; - + @Size(max = 255, message = "the length of versionRel can not exceed 255") private String versionRel; - + @Size(max = 255, message = "the length of versionVer can not exceed 255") private String versionVer; - + @Size(max = 255, message = "the length of packager can not exceed 255") private String packager; - + @Size(max = 255, message = "the length of url can not exceed 255") private String url; - + @Size(max = 255, message = "the length of versionEpoch can not exceed 255") private String versionEpoch; - + @Size(max = 255, message = "the length of rpmSourcerpm can not exceed 255") private String rpmSourcerpm; - @Size(max = 500, message = "the length of rpmLicense can not exceed 500") + @Size(max = 1000, message = "the length of rpmLicense can not exceed 255") private String rpmLicense; @Size(max = 255, message = "the length of name can not exceed 255") - @NotBlank(message = "name can not be null") private String name; - + @Size(max = 255, message = "the length of timeBuild can not exceed 255") private String timeBuild; - + @Size(max = 255, message = "the length of arch can not exceed 255") private String arch; - @Size(max = 255, message = "the length of pkgType can not exceed 255") - private String pkgType; - @Size(max = 255, message = "the length of osName can not exceed 255") private String osName; - + @Size(max = 255, message = "the length of osVer can not exceed 255") private String osVer; @Size(max = 255, message = "the length of osType can not exceed 255") private String osType; + + @Size(max = 100_0000, message = "the length of requires can not exceed 100_0000") + private String requires; + + @Size(max = 100_0000, message = "the length of provides can not exceed 100_0000") + private String provides; + + @Size(max = 100_0000, message = "the length of files can not exceed 100_0000") + private String files; + + @Size(max = 255, message = "the length of baseUrl can not exceed 255") + private String baseUrl; + + @Size(max = 255, message = "the length of rpmCategory can not exceed 255") + private String rpmCategory; + + @Size(max = 255, message = "the length of id can not exceed 255") + private String id; } diff --git a/src/main/java/com/easysoftware/domain/rpmpackage/RPMPackage.java b/src/main/java/com/easysoftware/domain/rpmpackage/RPMPackage.java index 9355ffd5d6421383986bed75966ca8719b87ac14..feecce0bf378cc79e940fce6758fa7f7bef34377 100644 --- a/src/main/java/com/easysoftware/domain/rpmpackage/RPMPackage.java +++ b/src/main/java/com/easysoftware/domain/rpmpackage/RPMPackage.java @@ -73,4 +73,8 @@ public class RPMPackage { private String provides; private String requires; + + private String baseUrl; + + private String rpmCategory; } diff --git a/src/main/java/com/easysoftware/domain/rpmpackage/RPMPackageUnique.java b/src/main/java/com/easysoftware/domain/rpmpackage/RPMPackageUnique.java new file mode 100644 index 0000000000000000000000000000000000000000..4ced706f1e942022679598abee816bad95cb21f1 --- /dev/null +++ b/src/main/java/com/easysoftware/domain/rpmpackage/RPMPackageUnique.java @@ -0,0 +1,20 @@ +package com.easysoftware.domain.rpmpackage; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class RPMPackageUnique { + private String name; + private String versionVer; + private String versionRel; + private String osName; + private String osVer; + private String arch; + private String rpmCategory; + private String timeFile; + +} 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 1b15940f8cf0c0ac3c113247aabe440bdbe428b8..842edbc4814b49d3fe88043a5e9883ea3225647d 100644 --- a/src/main/java/com/easysoftware/domain/rpmpackage/gateway/RPMPackageGateway.java +++ b/src/main/java/com/easysoftware/domain/rpmpackage/gateway/RPMPackageGateway.java @@ -4,11 +4,13 @@ import java.util.List; import com.easysoftware.application.rpmpackage.dto.RPMPackageSearchCondition; import com.easysoftware.domain.rpmpackage.RPMPackage; +import com.easysoftware.domain.rpmpackage.RPMPackageUnique; public interface RPMPackageGateway { - boolean existRPM(String name); + boolean existRPM(RPMPackageUnique unique); + boolean existRPM(String id); boolean save(RPMPackage appPkg); boolean update(RPMPackage appPkg); - boolean delete(String name); + boolean delete(String id); List queryByName(RPMPackageSearchCondition condition); } 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 bb48c33292f90d9fab76bda6e7650339dea095bb..cc8564d816a05532f80ea4e7a8131643c8713750 100644 --- a/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/RPMPackageGatewayImpl.java +++ b/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/RPMPackageGatewayImpl.java @@ -1,41 +1,62 @@ package com.easysoftware.infrastructure.rpmpackage.gatewayimpl; +import java.util.HashMap; import java.util.List; +import java.util.Map; + +import javax.management.Query; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.easysoftware.application.rpmpackage.dto.RPMPackageSearchCondition; import com.easysoftware.domain.applicationpackage.ApplicationPackage; import com.easysoftware.domain.rpmpackage.RPMPackage; +import com.easysoftware.domain.rpmpackage.RPMPackageUnique; import com.easysoftware.domain.rpmpackage.gateway.RPMPackageGateway; import com.easysoftware.infrastructure.applicationpackage.gatewayimpl.converter.ApplicationPackageConvertor; import com.easysoftware.infrastructure.applicationpackage.gatewayimpl.dataobject.ApplicationPackageDO; import com.easysoftware.infrastructure.mapper.RPMPackageDOMapper; import com.easysoftware.infrastructure.rpmpackage.gatewayimpl.converter.RPMPackageConverter; import com.easysoftware.infrastructure.rpmpackage.gatewayimpl.dataobject.RPMPackageDO; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.power.common.util.StringUtil; @Component public class RPMPackageGatewayImpl implements RPMPackageGateway { @Autowired private RPMPackageDOMapper rPMPkgMapper; + @Autowired + private ObjectMapper objectMapper; + @Override - public boolean delete(String name) { + public boolean delete(String id) { QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("name", name); + wrapper.eq("id", id); int mark = rPMPkgMapper.delete(wrapper); return mark == 1; } @Override - public boolean existRPM(String name) { - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("name", name); + public boolean existRPM(RPMPackageUnique unique) { + Map map = objectMapper.convertValue(unique, HashMap.class); + + Map underlineMap = new HashMap<>(); + for (String key : map.keySet()) { + String underlineKey = StringUtil.camelToUnderline(key); + underlineMap.put(underlineKey, map.get(key)); + } + + QueryWrapper wrapper = Wrappers.query(); + wrapper.setEntityClass(RPMPackageDO.class); + wrapper.allEq(underlineMap, false); return rPMPkgMapper.exists(wrapper); } @@ -77,5 +98,12 @@ public class RPMPackageGatewayImpl implements RPMPackageGateway { int mark = rPMPkgMapper.update(rPMPkgDO, wrapper); return mark == 1; } + + @Override + public boolean existRPM(String id) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("id", id); + return rPMPkgMapper.exists(wrapper); + } } diff --git a/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/dataobject/RPMPackageDO.java b/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/dataobject/RPMPackageDO.java index 3dbe50ce713b9ad9fb1e8154c2bd45358af3696b..4bf32c49894a848c18112068e167d4b116acec83 100644 --- a/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/dataobject/RPMPackageDO.java +++ b/src/main/java/com/easysoftware/infrastructure/rpmpackage/gatewayimpl/dataobject/RPMPackageDO.java @@ -87,4 +87,8 @@ public class RPMPackageDO { private String provides; private String requires; + + private String baseUrl; + + private String rpmCategory; }