diff --git a/src/main/java/com/easysoftware/adapter/query/ApplicationVersionAdapter.java b/src/main/java/com/easysoftware/adapter/query/ApplicationVersionAdapter.java new file mode 100644 index 0000000000000000000000000000000000000000..8448d2838bd7913533afb3be1626c177cf63b325 --- /dev/null +++ b/src/main/java/com/easysoftware/adapter/query/ApplicationVersionAdapter.java @@ -0,0 +1,52 @@ +package com.easysoftware.adapter.query; + +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.GetMapping; +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.applicationversion.ApplicationVersionService; +import com.easysoftware.application.applicationversion.dto.ApplicationVersionSearchCondition; +import com.easysoftware.application.applicationversion.dto.InputApplicationVersion; + +import jakarta.validation.Valid; + +@RestController +@RequestMapping("/appVersion") +public class ApplicationVersionAdapter { + @Autowired + private ApplicationVersionService appVersionService; + + @PostMapping("") + public ResponseEntity insertAppVersion(@Valid @RequestBody InputApplicationVersion inputAppVersion) { + ResponseEntity res = appVersionService.insertAppVersion(inputAppVersion); + return res; + } + + @PutMapping() + public ResponseEntity updateAppVersion(@Valid @RequestBody InputApplicationVersion inputAppVersion) { + ResponseEntity res = appVersionService.updateAppVersion(inputAppVersion); + return res; + } + + @DeleteMapping(value = "/{names}") + public ResponseEntity deleteAppVersion(@PathVariable List names) { + ResponseEntity res = appVersionService.deleteAppVersion(names); + return res; + } + + @GetMapping() + public ResponseEntity searchAppVersion(@Valid ApplicationVersionSearchCondition condition) { + ResponseEntity res = appVersionService.searchAppVersion(condition); + return res; + } + +} diff --git a/src/main/java/com/easysoftware/aop/ManagementLogAOP.java b/src/main/java/com/easysoftware/aop/ManagementLogAOP.java index bdc3545bcd4145fd9d31ec981dc58455c5856cbc..38dcd0aee9a028c1d7a212a9b552ce20afd89689 100644 --- a/src/main/java/com/easysoftware/aop/ManagementLogAOP.java +++ b/src/main/java/com/easysoftware/aop/ManagementLogAOP.java @@ -23,7 +23,7 @@ public class ManagementLogAOP { private HttpServletResponse response; //定义切点 - @Pointcut("execution(* com.easysoftware.adapter.*.*(..))") + @Pointcut("execution(* com.easysoftware.adapter.query.*.*(..))") public void pointcut() { } diff --git a/src/main/java/com/easysoftware/application/applicationversion/ApplicationVersionService.java b/src/main/java/com/easysoftware/application/applicationversion/ApplicationVersionService.java new file mode 100644 index 0000000000000000000000000000000000000000..1b3c135e4b5b1b98f4779cfa984fa5621102b472 --- /dev/null +++ b/src/main/java/com/easysoftware/application/applicationversion/ApplicationVersionService.java @@ -0,0 +1,15 @@ +package com.easysoftware.application.applicationversion; + +import java.util.List; + +import org.springframework.http.ResponseEntity; + +import com.easysoftware.application.applicationversion.dto.ApplicationVersionSearchCondition; +import com.easysoftware.application.applicationversion.dto.InputApplicationVersion; + +public interface ApplicationVersionService { + ResponseEntity insertAppVersion(InputApplicationVersion listApp); + ResponseEntity updateAppVersion(InputApplicationVersion inputAppVersion); + ResponseEntity deleteAppVersion(List names); + ResponseEntity searchAppVersion(ApplicationVersionSearchCondition condition); +} diff --git a/src/main/java/com/easysoftware/application/applicationversion/ApplicationVersionServiceImpl.java b/src/main/java/com/easysoftware/application/applicationversion/ApplicationVersionServiceImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..e09f8afbbd08e98358c04276a1a9ab0067e5b06e --- /dev/null +++ b/src/main/java/com/easysoftware/application/applicationversion/ApplicationVersionServiceImpl.java @@ -0,0 +1,87 @@ +package com.easysoftware.application.applicationversion; +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.BeanUtils; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +import com.easysoftware.application.applicationversion.dto.ApplicationVersionSearchCondition; +import com.easysoftware.application.applicationversion.dto.InputApplicationVersion; +import com.easysoftware.domain.applicationversion.ApplicationVersion; +import com.easysoftware.domain.applicationversion.gateway.ApplicationVersionGateway; +import com.easysoftware.result.MessageCode; +import com.easysoftware.result.Result; + +import jakarta.annotation.Resource; + +@Service +public class ApplicationVersionServiceImpl implements ApplicationVersionService { + @Resource + ApplicationVersionGateway AppVersionGateway; + + @Override + public ResponseEntity insertAppVersion(InputApplicationVersion inputAppVersion) { + // 数据库中是否已存在该包 + boolean found = AppVersionGateway.existApp(inputAppVersion.getName()); + if (found) { + return Result.fail(HttpStatus.BAD_REQUEST, MessageCode.EC0008); + } + ApplicationVersion AppVersion = new ApplicationVersion(); + BeanUtils.copyProperties(inputAppVersion, AppVersion); + + boolean succeed = AppVersionGateway.save(AppVersion); + if (!succeed) { + return Result.fail(HttpStatus.BAD_REQUEST, MessageCode.EC0006); + } + return Result.success(HttpStatus.OK); + } + + @Override + public ResponseEntity searchAppVersion(ApplicationVersionSearchCondition condition) { + List res = AppVersionGateway.queryByName(condition); + return Result.success(HttpStatus.OK, res); + } + + @Override + public ResponseEntity updateAppVersion(InputApplicationVersion inputAppVersion) { + // 数据库中是否已存在该包 + boolean found = AppVersionGateway.existApp(inputAppVersion.getName()); + if (!found) { + return Result.fail(HttpStatus.BAD_REQUEST, MessageCode.EC0009); + } + ApplicationVersion AppVersion = new ApplicationVersion(); + BeanUtils.copyProperties(inputAppVersion, AppVersion); + + boolean succeed = AppVersionGateway.update(AppVersion); + if (!succeed) { + return Result.fail(HttpStatus.BAD_REQUEST, MessageCode.EC0004); + } + return Result.success(HttpStatus.OK); + } + + @Override + public ResponseEntity deleteAppVersion(List names) { + List existedNames = new ArrayList<>(); + for (String name : names) { + boolean found = AppVersionGateway.existApp(name); + if (found) { + existedNames.add(name); + } + } + + List deletedNames = new ArrayList<>(); + for (String name : existedNames) { + boolean deleted = AppVersionGateway.delete(names); + if (deleted) { + deletedNames.add(name); + } + } + + String msg = String.format("请求删除的数据: %s, 在数据库中的数据: %s, 成功删除的数据: %s" + , names.toString(), existedNames.toString(), deletedNames.toString()); + return Result.success(HttpStatus.OK, msg); + } + +} diff --git a/src/main/java/com/easysoftware/application/applicationversion/dto/ApplicationVersionSearchCondition.java b/src/main/java/com/easysoftware/application/applicationversion/dto/ApplicationVersionSearchCondition.java new file mode 100644 index 0000000000000000000000000000000000000000..6a60536ba939329d446d205f5902001a6260274f --- /dev/null +++ b/src/main/java/com/easysoftware/application/applicationversion/dto/ApplicationVersionSearchCondition.java @@ -0,0 +1,25 @@ +package com.easysoftware.application.applicationversion.dto; + +import org.hibernate.validator.constraints.Range; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ApplicationVersionSearchCondition { + @Size(max = 50) + @NotBlank + private String name; + + @Range(min = 1, max = 1000, message = "page must be greater than 0 and less than 1000 ") + private Integer pageNum = 1; + + @Range(min = 5, max = 50, message = "page must be greater than 5 and less than 50 ") + private Integer pageSize = 10; +} + diff --git a/src/main/java/com/easysoftware/application/applicationversion/dto/InputApplicationVersion.java b/src/main/java/com/easysoftware/application/applicationversion/dto/InputApplicationVersion.java new file mode 100644 index 0000000000000000000000000000000000000000..6ea6480537990f44ae991c811ef2d1dfdf6124aa --- /dev/null +++ b/src/main/java/com/easysoftware/application/applicationversion/dto/InputApplicationVersion.java @@ -0,0 +1,24 @@ +package com.easysoftware.application.applicationversion.dto; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class InputApplicationVersion { + @Size(max = 255, message = "the length of description can not exceed 255") + public String version; + + @NotBlank(message = "name can not be null") + @Size(max = 255, message = "the length of name can not exceed 255") + public String name; + + @Size(max = 255, message = "the length of arch can not exceed 255") + public String homepage; + + @Size(max = 255, message = "the length of arch can not exceed 255") + public String backend; +} diff --git a/src/main/java/com/easysoftware/domain/applicationversion/ApplicationVersion.java b/src/main/java/com/easysoftware/domain/applicationversion/ApplicationVersion.java new file mode 100644 index 0000000000000000000000000000000000000000..d78c1a3b7b08d65ccc7ffaa7f362747eda911553 --- /dev/null +++ b/src/main/java/com/easysoftware/domain/applicationversion/ApplicationVersion.java @@ -0,0 +1,20 @@ +package com.easysoftware.domain.applicationversion; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class ApplicationVersion { + @Serial + private static final long serialVersionUID = 1L; + public String name; + public String version; + public String homepage; + public String backend; + private String id; +} diff --git a/src/main/java/com/easysoftware/domain/applicationversion/gateway/ApplicationVersionGateway.java b/src/main/java/com/easysoftware/domain/applicationversion/gateway/ApplicationVersionGateway.java new file mode 100644 index 0000000000000000000000000000000000000000..48a15489f0c237997b02a06602eb3e525a67743f --- /dev/null +++ b/src/main/java/com/easysoftware/domain/applicationversion/gateway/ApplicationVersionGateway.java @@ -0,0 +1,16 @@ +package com.easysoftware.domain.applicationversion.gateway; + +import java.util.List; + +import com.easysoftware.application.applicationversion.dto.ApplicationVersionSearchCondition; +import com.easysoftware.domain.applicationversion.ApplicationVersion; + + +public interface ApplicationVersionGateway { + boolean existApp(String name); + boolean save(ApplicationVersion appVersion); + boolean update(ApplicationVersion appVersion); + boolean delete(List names); + List queryByName(ApplicationVersionSearchCondition condition); +} + diff --git a/src/main/java/com/easysoftware/infrastructure/applicationversion/gatewayimpl/ApplicationVersionGatewayImpl.java b/src/main/java/com/easysoftware/infrastructure/applicationversion/gatewayimpl/ApplicationVersionGatewayImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..48394ece89bfdf0a8dbb29959d5e8f43baa8f997 --- /dev/null +++ b/src/main/java/com/easysoftware/infrastructure/applicationversion/gatewayimpl/ApplicationVersionGatewayImpl.java @@ -0,0 +1,79 @@ +package com.easysoftware.infrastructure.applicationversion.gatewayimpl; + +import java.util.List; +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.extension.plugins.pagination.Page; +import com.easysoftware.application.applicationversion.dto.ApplicationVersionSearchCondition; +import com.easysoftware.domain.applicationversion.ApplicationVersion; +import com.easysoftware.domain.applicationversion.gateway.ApplicationVersionGateway; +import com.easysoftware.infrastructure.applicationversion.gatewayimpl.converter.ApplicationVersionConvertor; +import com.easysoftware.infrastructure.applicationversion.gatewayimpl.dataobject.ApplicationVersionDO; +import com.easysoftware.infrastructure.mapper.ApplicationVersionDOMapper; + +@Component +public class ApplicationVersionGatewayImpl implements ApplicationVersionGateway { + @Autowired + private ApplicationVersionDOMapper appVersionMapper; + + @Override + public boolean delete(List names) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.in("name", names); + int mark = appVersionMapper.delete(wrapper); + return mark == 1; + } + + + @Override + public boolean existApp(String name) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("name", name); + return appVersionMapper.exists(wrapper); + } + + + @Override + public boolean save(ApplicationVersion appVersion) { + ApplicationVersionDO appVersionDO = ApplicationVersionConvertor.toDataObjectForCreate(appVersion); + int mark = appVersionMapper.insert(appVersionDO); + return mark == 1; + } + + + @Override + public boolean update(ApplicationVersion appVersion) { + ApplicationVersionDO appVersionDO = ApplicationVersionConvertor.toDataObjectForUpdate(appVersion); + + UpdateWrapper wrapper = new UpdateWrapper<>(); + wrapper.eq("name", appVersion.getName()); + + int mark = appVersionMapper.update(appVersionDO, wrapper); + return mark == 1; + } + + @Override + public List queryByName(ApplicationVersionSearchCondition condition) { + int pageNum = condition.getPageNum(); + int pageSize = condition.getPageSize(); + String name = condition.getName(); + + Page page = new Page<>(pageNum, pageSize); + + QueryWrapper wrapper = new QueryWrapper<>(); + if ("all".equals(name)) { + } else { + wrapper.eq("name", name); + } + + Page resPage = appVersionMapper.selectPage(page, wrapper); + List appDOs = resPage.getRecords(); + List res = ApplicationVersionConvertor.toEntity(appDOs); + + return res; + } +} + + diff --git a/src/main/java/com/easysoftware/infrastructure/applicationversion/gatewayimpl/converter/ApplicationVersionConvertor.java b/src/main/java/com/easysoftware/infrastructure/applicationversion/gatewayimpl/converter/ApplicationVersionConvertor.java new file mode 100644 index 0000000000000000000000000000000000000000..1d66a6706c07a59814860287089ed803c8ebb6af --- /dev/null +++ b/src/main/java/com/easysoftware/infrastructure/applicationversion/gatewayimpl/converter/ApplicationVersionConvertor.java @@ -0,0 +1,56 @@ +package com.easysoftware.infrastructure.applicationversion.gatewayimpl.converter; + +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.BeanUtils; + +import com.easysoftware.domain.applicationversion.ApplicationVersion; +import com.easysoftware.domain.common.utils.UuidUtil; +import com.easysoftware.infrastructure.applicationversion.gatewayimpl.dataobject.ApplicationVersionDO; + +public class ApplicationVersionConvertor { + public static ApplicationVersion toEntity(ApplicationVersionDO appVersionDO) { + ApplicationVersion appVersion = new ApplicationVersion(); + BeanUtils.copyProperties(appVersionDO, appVersion); + return appVersion; + } + + public static List toEntity(List appDOs) { + List res = new ArrayList<>(); + for (ApplicationVersionDO appDO : appDOs) { + ApplicationVersion app = toEntity(appDO); + res.add(app); + } + return res; + } + + public static ApplicationVersionDO toDataObject(ApplicationVersion appVersion) { + ApplicationVersionDO appVersionDO = new ApplicationVersionDO(); + BeanUtils.copyProperties(appVersion, appVersionDO); + return appVersionDO; + } + + public static ApplicationVersionDO toDataObjectForCreate(ApplicationVersion appVersion) { + ApplicationVersionDO appVersionDO = toDataObject(appVersion); + + Timestamp currentTime = new Timestamp(System.currentTimeMillis()); + String id = UuidUtil.getUUID32(); + appVersionDO.setCreatedAt(currentTime); + appVersionDO.setUpdateAt(currentTime); + appVersionDO.setId(id); + + return appVersionDO; + } + + public static ApplicationVersionDO toDataObjectForUpdate(ApplicationVersion appVersion) { + ApplicationVersionDO appVersionDO = toDataObject(appVersion); + + Timestamp currentTime = new Timestamp(System.currentTimeMillis()); + appVersionDO.setUpdateAt(currentTime); + + return appVersionDO; + } +} + diff --git a/src/main/java/com/easysoftware/infrastructure/applicationversion/gatewayimpl/dataobject/ApplicationVersionDO.java b/src/main/java/com/easysoftware/infrastructure/applicationversion/gatewayimpl/dataobject/ApplicationVersionDO.java new file mode 100644 index 0000000000000000000000000000000000000000..da679f888fd060a9e02444cf1108e840ff588e80 --- /dev/null +++ b/src/main/java/com/easysoftware/infrastructure/applicationversion/gatewayimpl/dataobject/ApplicationVersionDO.java @@ -0,0 +1,26 @@ +package com.easysoftware.infrastructure.applicationversion.gatewayimpl.dataobject; + +import java.io.Serial; +import java.sql.Timestamp; + +import com.baomidou.mybatisplus.annotation.TableName; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("application_version") +public class ApplicationVersionDO { + @Serial + private static final long serialVersionUID = 1L; + public String name; + public String version; + public String homepage; + public String backend; + private String id; + private Timestamp createdAt; + private Timestamp updateAt; +} diff --git a/src/main/java/com/easysoftware/infrastructure/mapper/ApplicationVersionDOMapper.java b/src/main/java/com/easysoftware/infrastructure/mapper/ApplicationVersionDOMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..5ea782c607025c58650573b8cceeba2945075b94 --- /dev/null +++ b/src/main/java/com/easysoftware/infrastructure/mapper/ApplicationVersionDOMapper.java @@ -0,0 +1,8 @@ +package com.easysoftware.infrastructure.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.easysoftware.infrastructure.applicationversion.gatewayimpl.dataobject.ApplicationVersionDO; + +public interface ApplicationVersionDOMapper extends BaseMapper { + +} diff --git a/src/main/java/com/easysoftware/result/MessageCode.java b/src/main/java/com/easysoftware/result/MessageCode.java index e8e54ef59ff96a503d4393a9106535ca7e47f2d3..9f6b414266466d526f29b21ce3e9e2140baefedd 100644 --- a/src/main/java/com/easysoftware/result/MessageCode.java +++ b/src/main/java/com/easysoftware/result/MessageCode.java @@ -18,8 +18,14 @@ import java.util.stream.Collectors; public enum MessageCode { // client exception EC0001("EC0001", "Request Error", "请求异常"), - EC0005("EC0002", "Wrong parameter", "参数错误"), - EC0009("EC0003", "Unsupported community", "不支持该community"), + EC0002("EC0002", "Wrong parameter", "参数错误"), + EC0003("EC0003", "Unsupported community", "不支持该community"), + EC0004("EC0004", "Update failed", "更新失败"), + EC0005("EC0005", "Delete failed", "删除失败"), + EC0006("EC0006", "Insert failed", "插入失败"), + EC0007("EC0007", "query failed", "查找失败"), + EC0008("EC0008", "Item existed", "项目已存在"), + EC0009("EC0009", "Item not existed", "项目不存在"), // self service exception ES0001("ES0001", "Internal Server Error", "服务异常"); diff --git a/src/main/java/com/easysoftware/utils/LogUtil.java b/src/main/java/com/easysoftware/utils/LogUtil.java index ad3464c4cc609ade95023a0c48cf7ca943712857..48e14b0a3f66a32c84d7cecd4cdc6ff07b9c7520 100644 --- a/src/main/java/com/easysoftware/utils/LogUtil.java +++ b/src/main/java/com/easysoftware/utils/LogUtil.java @@ -1,6 +1,7 @@ package com.easysoftware.utils; import com.easysoftware.vo.ManagementLog; +import com.easysoftware.vo.ResultVo; import com.fasterxml.jackson.databind.ObjectMapper; import org.aspectj.lang.JoinPoint; @@ -14,7 +15,6 @@ import lombok.SneakyThrows; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.HashMap; public class LogUtil { private static final Logger logger = LoggerFactory.getLogger(LogUtil.class); @@ -39,11 +39,11 @@ public class LogUtil { log.setAppIP(ClientUtil.getClientIpAddress(request)); if (returnObject instanceof ResponseEntity) { - ResponseEntity responseEntity = (ResponseEntity) returnObject; - log.setStatus(responseEntity.getStatusCodeValue()); - if (responseEntity.getBody() instanceof HashMap) { - HashMap body = (HashMap) responseEntity.getBody(); - Object msg = (body.get("msg") == null) ? body.get("message") : body.get("msg"); + ResponseEntity responseEntity = (ResponseEntity) returnObject; + log.setStatus(responseEntity.getStatusCode().value()); + if (responseEntity.getBody() instanceof ResultVo) { + ResultVo body = (ResultVo) responseEntity.getBody(); + Object msg = body.getMsg(); log.setMessage((msg == null) ? "" : msg.toString()); } }