From 57dcbbba1adfaad8b128c44b95cc3762b093f9f7 Mon Sep 17 00:00:00 2001 From: gouzhonglin Date: Wed, 6 Mar 2024 17:23:35 +0800 Subject: [PATCH] update insert/update/delete of externalos --- .../execute/ExternalOsExecuteAdapter.java | 44 ++++++++++++ .../externalos/ExternalOsService.java | 7 ++ .../externalos/ExternalOsServiceImpl.java | 72 +++++++++++++++++++ .../externalos/dto/InputExternalOs.java | 36 ++++++++++ .../domain/externalos/ExternalOs.java | 2 + .../domain/externalos/ExternalOsUnique.java | 22 ++++++ .../externalos/gateway/ExternalOsGateway.java | 6 ++ .../gatewayimpl/ExternalOsGatewayImpl.java | 45 ++++++++++++ .../converter/ExternalOsConverter.java | 29 ++++++++ 9 files changed, 263 insertions(+) create mode 100644 src/main/java/com/easysoftware/adapter/execute/ExternalOsExecuteAdapter.java create mode 100644 src/main/java/com/easysoftware/application/externalos/dto/InputExternalOs.java create mode 100644 src/main/java/com/easysoftware/domain/externalos/ExternalOsUnique.java diff --git a/src/main/java/com/easysoftware/adapter/execute/ExternalOsExecuteAdapter.java b/src/main/java/com/easysoftware/adapter/execute/ExternalOsExecuteAdapter.java new file mode 100644 index 0000000..ddc05bb --- /dev/null +++ b/src/main/java/com/easysoftware/adapter/execute/ExternalOsExecuteAdapter.java @@ -0,0 +1,44 @@ +package com.easysoftware.adapter.execute; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.easysoftware.application.epkgpackage.dto.InputEPKGPackage; +import com.easysoftware.application.externalos.ExternalOsService; +import com.easysoftware.application.externalos.dto.InputExternalOs; + +import jakarta.validation.Valid; + +@RestController +@RequestMapping("/externalos") +public class ExternalOsExecuteAdapter { + @Autowired + private ExternalOsService externalOsService; + + @PostMapping("") + public ResponseEntity insertPkgMap(@Valid @RequestBody InputExternalOs input) { + ResponseEntity res = externalOsService.insertPkgMap(input); + return res; + } + + @PutMapping() + public ResponseEntity updatePkgMap(@Valid @RequestBody InputExternalOs input) { + ResponseEntity res = externalOsService.updatePkgMap(input); + return res; + } + + @DeleteMapping(value = "/{ids}") + public ResponseEntity deletePkgMap(@PathVariable List ids) { + ResponseEntity res = externalOsService.deletePkgMap(ids); + return res; + } +} diff --git a/src/main/java/com/easysoftware/application/externalos/ExternalOsService.java b/src/main/java/com/easysoftware/application/externalos/ExternalOsService.java index f29800a..27191de 100644 --- a/src/main/java/com/easysoftware/application/externalos/ExternalOsService.java +++ b/src/main/java/com/easysoftware/application/externalos/ExternalOsService.java @@ -1,9 +1,16 @@ package com.easysoftware.application.externalos; +import java.util.List; + import org.springframework.http.ResponseEntity; import com.easysoftware.application.externalos.dto.ExternalOsSearchCondiiton; +import com.easysoftware.application.externalos.dto.InputExternalOs; public interface ExternalOsService { ResponseEntity searchPkgMap(ExternalOsSearchCondiiton condition); + ResponseEntity insertPkgMap(InputExternalOs input); + ResponseEntity updatePkgMap(InputExternalOs input); + ResponseEntity deletePkgMap(List ids); + } diff --git a/src/main/java/com/easysoftware/application/externalos/ExternalOsServiceImpl.java b/src/main/java/com/easysoftware/application/externalos/ExternalOsServiceImpl.java index db3e168..7b2347a 100644 --- a/src/main/java/com/easysoftware/application/externalos/ExternalOsServiceImpl.java +++ b/src/main/java/com/easysoftware/application/externalos/ExternalOsServiceImpl.java @@ -1,15 +1,22 @@ package com.easysoftware.application.externalos; +import java.util.ArrayList; import java.util.List; import java.util.Map; +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 com.easysoftware.application.externalos.dto.ExternalOsSearchCondiiton; +import com.easysoftware.application.externalos.dto.InputExternalOs; +import com.easysoftware.common.entity.MessageCode; +import com.easysoftware.common.utils.Base64Util; import com.easysoftware.common.utils.ResultUtil; import com.easysoftware.domain.externalos.ExternalOs; +import com.easysoftware.domain.externalos.ExternalOsUnique; import com.easysoftware.domain.externalos.gateway.ExternalOsGateway; import jakarta.annotation.Resource; @@ -24,5 +31,70 @@ public class ExternalOsServiceImpl implements ExternalOsService { Map res = externalOsGateway.queryPkgMap(condition); return ResultUtil.success(HttpStatus.OK, res); } + + @Override + public ResponseEntity deletePkgMap(List ids) { + List existedNames = new ArrayList<>(); + for (String id : ids) { + boolean found = externalOsGateway.existExternalOs(id); + if (found) { + existedNames.add(id); + } + } + + List deletedNames = new ArrayList<>(); + for (String id : existedNames) { + boolean deleted = externalOsGateway.delete(id); + if (deleted) { + deletedNames.add(id); + } + } + + String msg = String.format("请求删除的数据: %s, 在数据库中的数据: %s, 成功删除的数据: %s" + , ids.toString(), existedNames.toString(), deletedNames.toString()); + return ResultUtil.success(HttpStatus.OK); + } + + @Override + public ResponseEntity insertPkgMap(InputExternalOs input) { + input = Base64Util.decode(input); + + // 若数据库中已经存在该数据,则请求失败 + if (StringUtils.isNotBlank(input.getId())) { + return ResultUtil.fail(HttpStatus.BAD_REQUEST, MessageCode.EC0002); + } + + ExternalOs ex = new ExternalOs(); + BeanUtils.copyProperties(input, ex); + + boolean succeed = externalOsGateway.save(ex); + if (!succeed) { + return ResultUtil.fail(HttpStatus.BAD_REQUEST, MessageCode.EC0006); + } + return ResultUtil.success(HttpStatus.OK); + } + + @Override + public ResponseEntity updatePkgMap(InputExternalOs input) { + input = Base64Util.decode(input); + + if (StringUtils.isBlank(input.getId())) { + return ResultUtil.fail(HttpStatus.BAD_REQUEST, MessageCode.EC0002); + } + // 若数据库中不存在,则请求失败 + boolean found = externalOsGateway.existExternalOs(input.getId()); + if (!found) { + return ResultUtil.fail(HttpStatus.BAD_REQUEST, MessageCode.EC0009); + } + + ExternalOs ex = new ExternalOs(); + BeanUtils.copyProperties(input, ex); + + boolean succeed = externalOsGateway.update(ex); + if (!succeed) { + return ResultUtil.fail(HttpStatus.BAD_REQUEST, MessageCode.EC0004); + } + return ResultUtil.success(HttpStatus.OK); + } } diff --git a/src/main/java/com/easysoftware/application/externalos/dto/InputExternalOs.java b/src/main/java/com/easysoftware/application/externalos/dto/InputExternalOs.java new file mode 100644 index 0000000..de65c58 --- /dev/null +++ b/src/main/java/com/easysoftware/application/externalos/dto/InputExternalOs.java @@ -0,0 +1,36 @@ +package com.easysoftware.application.externalos.dto; + +import jakarta.validation.constraints.Size; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class InputExternalOs { + @Size(max = 255, message = "the length of name can not exceed 255") + private String name; + + @Size(max = 255, message = "the length of id can not exceed 255") + private String id; + + @Size(max = 255, message = "the length of originOsName can not exceed 255") + private String originOsName; + + @Size(max = 255, message = "the length of originOsVer can not exceed 255") + private String originOsVer; + + @Size(max = 255, message = "the length of originPkg can not exceed 255") + private String originPkg; + + @Size(max = 255, message = "the length of targetOsName can not exceed 255") + private String targetOsName; + + @Size(max = 255, message = "the length of targetOsVer can not exceed 255") + private String targetOsVer; + + @Size(max = 255, message = "the length of targetPkg can not exceed 255") + private String targetPkg; + +} diff --git a/src/main/java/com/easysoftware/domain/externalos/ExternalOs.java b/src/main/java/com/easysoftware/domain/externalos/ExternalOs.java index 5190d3a..5a34582 100644 --- a/src/main/java/com/easysoftware/domain/externalos/ExternalOs.java +++ b/src/main/java/com/easysoftware/domain/externalos/ExternalOs.java @@ -14,6 +14,8 @@ public class ExternalOs { @Serial private static final long serialVersionUID = 1L; + private String id; + private String originOsName; private String originOsVer; diff --git a/src/main/java/com/easysoftware/domain/externalos/ExternalOsUnique.java b/src/main/java/com/easysoftware/domain/externalos/ExternalOsUnique.java new file mode 100644 index 0000000..b75e31b --- /dev/null +++ b/src/main/java/com/easysoftware/domain/externalos/ExternalOsUnique.java @@ -0,0 +1,22 @@ +package com.easysoftware.domain.externalos; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ExternalOsUnique { + private String originOsName; + + private String originOsVer; + + private String originPkg; + + private String targetOsName; + + private String targetOsVer; + + private String targetPkg; +} diff --git a/src/main/java/com/easysoftware/domain/externalos/gateway/ExternalOsGateway.java b/src/main/java/com/easysoftware/domain/externalos/gateway/ExternalOsGateway.java index 8afa145..eda9b75 100644 --- a/src/main/java/com/easysoftware/domain/externalos/gateway/ExternalOsGateway.java +++ b/src/main/java/com/easysoftware/domain/externalos/gateway/ExternalOsGateway.java @@ -5,7 +5,13 @@ import java.util.Map; import com.easysoftware.application.externalos.dto.ExternalOsSearchCondiiton; import com.easysoftware.domain.externalos.ExternalOs; +import com.easysoftware.domain.externalos.ExternalOsUnique; public interface ExternalOsGateway { Map queryPkgMap(ExternalOsSearchCondiiton condition); + boolean existExternalOs(String id); + boolean delete(String id); + boolean existExternalOs(ExternalOsUnique uni); + boolean save(ExternalOs ex); + boolean update(ExternalOs ex); } diff --git a/src/main/java/com/easysoftware/infrastructure/externalos/gatewayimpl/ExternalOsGatewayImpl.java b/src/main/java/com/easysoftware/infrastructure/externalos/gatewayimpl/ExternalOsGatewayImpl.java index 9a93839..bfb61f5 100644 --- a/src/main/java/com/easysoftware/infrastructure/externalos/gatewayimpl/ExternalOsGatewayImpl.java +++ b/src/main/java/com/easysoftware/infrastructure/externalos/gatewayimpl/ExternalOsGatewayImpl.java @@ -7,12 +7,14 @@ 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.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.easysoftware.application.externalos.dto.ExternalOsSearchCondiiton; import com.easysoftware.application.rpmpackage.dto.RPMPackageSearchCondition; import com.easysoftware.common.utils.QueryWrapperUtil; import com.easysoftware.domain.externalos.ExternalOs; +import com.easysoftware.domain.externalos.ExternalOsUnique; import com.easysoftware.domain.externalos.gateway.ExternalOsGateway; import com.easysoftware.infrastructure.externalos.gatewayimpl.converter.ExternalOsConverter; import com.easysoftware.infrastructure.externalos.gatewayimpl.dataobject.ExternalOsDO; @@ -48,4 +50,47 @@ public class ExternalOsGatewayImpl implements ExternalOsGateway { Page page = new Page<>(pageNum, pageSize); return page; } + + + @Override + public boolean delete(String id) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("id", id); + int mark = externalOsDOMapper.delete(wrapper); + return mark == 1; + } + + + @Override + public boolean existExternalOs(ExternalOsUnique uni) { + QueryWrapper wrapper = QueryWrapperUtil.createQueryWrapper(new ExternalOsDO(), uni, ""); + return externalOsDOMapper.exists(wrapper); + } + + + @Override + public boolean existExternalOs(String id) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("id", id); + return externalOsDOMapper.exists(wrapper); + } + + + @Override + public boolean save(ExternalOs ex) { + ExternalOsDO exDO = ExternalOsConverter.toDataObjectForCreate(ex); + int mark = externalOsDOMapper.insert(exDO); + return mark == 1; + } + + + @Override + public boolean update(ExternalOs ex) { + ExternalOsDO exDO = ExternalOsConverter.toDataObjectForUpdate(ex); + UpdateWrapper wrapper = new UpdateWrapper<>(); + wrapper.eq("id", ex.getId()); + + int mark = externalOsDOMapper.update(exDO, wrapper); + return mark == 1; + } } diff --git a/src/main/java/com/easysoftware/infrastructure/externalos/gatewayimpl/converter/ExternalOsConverter.java b/src/main/java/com/easysoftware/infrastructure/externalos/gatewayimpl/converter/ExternalOsConverter.java index b334f32..b36965e 100644 --- a/src/main/java/com/easysoftware/infrastructure/externalos/gatewayimpl/converter/ExternalOsConverter.java +++ b/src/main/java/com/easysoftware/infrastructure/externalos/gatewayimpl/converter/ExternalOsConverter.java @@ -1,5 +1,6 @@ package com.easysoftware.infrastructure.externalos.gatewayimpl.converter; +import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; @@ -7,6 +8,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; +import com.easysoftware.common.utils.UuidUtil; import com.easysoftware.domain.externalos.ExternalOs; import com.easysoftware.infrastructure.externalos.gatewayimpl.dataobject.ExternalOsDO; import com.easysoftware.infrastructure.rpmpackage.gatewayimpl.converter.RPMPackageConverter; @@ -30,4 +32,31 @@ public class ExternalOsConverter { return res; } + public static ExternalOsDO toDataObjectForCreate(ExternalOs ex) { + ExternalOsDO exDO = toDataObject(ex); + + Timestamp currentTime = new Timestamp(System.currentTimeMillis()); + String id = UuidUtil.getUUID32(); + exDO.setCreateAt(currentTime); + exDO.setUpdateAt(currentTime); + exDO.setId(id); + + return exDO; + } + + public static ExternalOsDO toDataObjectForUpdate(ExternalOs ex) { + ExternalOsDO exDO = toDataObject(ex); + + Timestamp currentTime = new Timestamp(System.currentTimeMillis()); + exDO.setUpdateAt(currentTime); + + return exDO; + } + + public static ExternalOsDO toDataObject(ExternalOs ex) { + ExternalOsDO exDO = new ExternalOsDO(); + BeanUtils.copyProperties(ex, exDO); + return exDO; + } + } -- Gitee