diff --git a/docker_compose/credit_tracker_config.env b/docker_compose/credit_tracker_config.env index 1af4328..fe34ed0 100644 --- a/docker_compose/credit_tracker_config.env +++ b/docker_compose/credit_tracker_config.env @@ -1,5 +1,5 @@ #commons -APP_VERSION=1.11 +APP_VERSION=1.12 REGISTRY_URL=rh8-vm3.nbki.msk:5000 JMX_PORT= JMX_HOSTNAME= diff --git a/pom.xml b/pom.xml index fa3b295..66d84d3 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ ru.nbch credit-tracker - 1.11 + 1.12 credit_tracker Credit Tracker Application diff --git a/src/main/java/ru/nbch/credit_tracker/controller/SignalController.java b/src/main/java/ru/nbch/credit_tracker/controller/SignalController.java index 7393f6d..00b268b 100644 --- a/src/main/java/ru/nbch/credit_tracker/controller/SignalController.java +++ b/src/main/java/ru/nbch/credit_tracker/controller/SignalController.java @@ -32,6 +32,11 @@ public class SignalController { return signalFacade.findActivePackages(activePackagesRequest); } + @PostMapping(value = "/all_packages", consumes = MediaType.APPLICATION_XML_VALUE, produces = MediaType.APPLICATION_XML_VALUE) + public ResponseEntity findAllPackages(@RequestBody MonitoringActivePackagesRequest activePackagesRequest) { + return signalFacade.findAllPackages(activePackagesRequest); + } + @PostMapping(value = "/delete", params = {"username", "packageName"}, produces = MediaType.APPLICATION_XML_VALUE) public ResponseEntity deletePackage(@RequestParam("username") String username, @RequestParam("packageName") String packageName) { return signalFacade.deletePackage(username, packageName); diff --git a/src/main/java/ru/nbch/credit_tracker/entities/dto/UserPackage.java b/src/main/java/ru/nbch/credit_tracker/entities/dto/UserPackage.java index aef6bfa..f5cb245 100644 --- a/src/main/java/ru/nbch/credit_tracker/entities/dto/UserPackage.java +++ b/src/main/java/ru/nbch/credit_tracker/entities/dto/UserPackage.java @@ -15,5 +15,6 @@ public class UserPackage { private String packageName; private LocalDateTime createdAt; private String status; + private LocalDateTime deactivatedAt; private String lastDownloadedReport; } diff --git a/src/main/java/ru/nbch/credit_tracker/entities/user_response/active_packages/Package.java b/src/main/java/ru/nbch/credit_tracker/entities/user_response/active_packages/Package.java index 969006b..e56d1c2 100644 --- a/src/main/java/ru/nbch/credit_tracker/entities/user_response/active_packages/Package.java +++ b/src/main/java/ru/nbch/credit_tracker/entities/user_response/active_packages/Package.java @@ -12,7 +12,9 @@ import lombok.Setter; @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "", propOrder = { "packageName", - "createdAt" + "createdAt", + "status", + "deactivatedAt" }) public class Package { @@ -20,4 +22,8 @@ public class Package { protected String packageName; @XmlElement(name = "CreatedAt", required = true) protected String createdAt; + @XmlElement(name = "Status", required = false) + protected String status; + @XmlElement(name = "DeactivatedAt", required = false) + protected String deactivatedAt; } diff --git a/src/main/java/ru/nbch/credit_tracker/enums/SignalError.java b/src/main/java/ru/nbch/credit_tracker/enums/SignalError.java index 64e75cd..0b096f7 100644 --- a/src/main/java/ru/nbch/credit_tracker/enums/SignalError.java +++ b/src/main/java/ru/nbch/credit_tracker/enums/SignalError.java @@ -16,7 +16,8 @@ public enum SignalError implements IEnumKeyCode { ERROR_014("014", "Файл не найден"), ERROR_015("015", "У данного пользователя не найдено активных пакетов"), ERROR_016("016", "Нет активного пакета с именем "), - ERROR_017("017", "При обработке запроса произошла ошибка. Повторите запрос позже или обратитесь в службу технической поддержки"); // TODO get rid of duplicate? + ERROR_017("017", "При обработке запроса произошла ошибка. Повторите запрос позже или обратитесь в службу технической поддержки"), // TODO get rid of duplicate? + ERROR_019("019", "У данного пользователя не найдено ни одного пакета"); private final String code; private final String message; diff --git a/src/main/java/ru/nbch/credit_tracker/facade/SignalFacade.java b/src/main/java/ru/nbch/credit_tracker/facade/SignalFacade.java index 12e7bf7..575662b 100644 --- a/src/main/java/ru/nbch/credit_tracker/facade/SignalFacade.java +++ b/src/main/java/ru/nbch/credit_tracker/facade/SignalFacade.java @@ -281,6 +281,43 @@ public class SignalFacade { } } + public ResponseEntity findAllPackages(MonitoringActivePackagesRequest activePackagesRequest) { + try { + AuthorizationService.AuthResult authResult = authorizationService.findAuthInfo(activePackagesRequest.getUserId(), activePackagesRequest.getPassword()); + if (!authResult.isSuccess()) { + throw clientExcp(authResult.getError(), XmlErrorFormat.MonitoringActivePackagesError); + } + List activePackages = signalService.findAllPackages(activePackagesRequest.getUserId()); + + if (!activePackages.isEmpty()) { + MonitoringActivePackagesResponse response = new MonitoringActivePackagesResponse(); + response.setStatus("OK"); + response.setMembercode(activePackagesRequest.getUserId().substring(0, 6)); + Packages packages = new Packages(); + activePackages.forEach(data -> { + Package pack = new Package(); + pack.setPackageName(data.getPackageName()); + pack.setCreatedAt(data.getCreatedAt() != null ? data.getCreatedAt().toString() : null); + pack.setStatus(data.getStatus()); + if (data.getStatus().equals(Status.DELETED.name())) { + pack.setDeactivatedAt(data.getDeactivatedAt() != null ? data.getDeactivatedAt().toString() : null); + } + packages.getPackages().add(pack); + }); + response.setPackages(packages); + return ResponseEntity.ok(response); + } else { + throw clientExcp(SignalError.ERROR_019, XmlErrorFormat.MonitoringActivePackagesError); + } + } catch (Exception e) { + if (e instanceof SignalClientException) { + throw (SignalClientException) e; + } + log.error(e.getMessage(), e); + throw serverExcp(SignalError.ERROR_013, XmlErrorFormat.MonitoringActivePackagesError); + } + } + public ResponseEntity deletePackage(String username, String packageName) { try { if (!signalService.isPackageExists(username, packageName)) { diff --git a/src/main/java/ru/nbch/credit_tracker/mapper/signal/UserPackageMapper.java b/src/main/java/ru/nbch/credit_tracker/mapper/signal/UserPackageMapper.java index 436488a..0540fa1 100644 --- a/src/main/java/ru/nbch/credit_tracker/mapper/signal/UserPackageMapper.java +++ b/src/main/java/ru/nbch/credit_tracker/mapper/signal/UserPackageMapper.java @@ -29,4 +29,6 @@ public interface UserPackageMapper { List findUserPackages(@Param("userId") String userId, @Param("statuses") List status); List findAllPackagesByStatus(@Param("status") String status); + + List findAllPackagesByUserId(@Param("userId") String userId); } diff --git a/src/main/java/ru/nbch/credit_tracker/service/SignalService.java b/src/main/java/ru/nbch/credit_tracker/service/SignalService.java index defd4f7..d685077 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/SignalService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/SignalService.java @@ -310,6 +310,10 @@ public class SignalService { return userPackageService.findUserPackages(userId, Status.ON_MONITORING, Status.PROCESSING); } + public List findAllPackages(String userId) { + return userPackageService.findAllPackagesByUserId(userId); + } + public boolean isPackageExists(String username, String packageName) { return userPackageService.isPackageExists(username, packageName, Status.ON_MONITORING); } diff --git a/src/main/java/ru/nbch/credit_tracker/service/signal/UserPackageService.java b/src/main/java/ru/nbch/credit_tracker/service/signal/UserPackageService.java index 0dbc049..2699ec6 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/signal/UserPackageService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/signal/UserPackageService.java @@ -54,6 +54,10 @@ public class UserPackageService { return mapper.findUserPackages(userId.substring(0, 6), Arrays.stream(status).map(Enum::name).toList()); } + public List findAllPackagesByUserId(String userId) { + return mapper.findAllPackagesByUserId(userId.substring(0, 6)); + } + public List findAllPackagesByStatus(Status status) { return mapper.findAllPackagesByStatus(status.name()); } diff --git a/src/main/resources/mybatis/mapper/signal/UserPackageMapper.xml b/src/main/resources/mybatis/mapper/signal/UserPackageMapper.xml index 9022c27..263aa5a 100644 --- a/src/main/resources/mybatis/mapper/signal/UserPackageMapper.xml +++ b/src/main/resources/mybatis/mapper/signal/UserPackageMapper.xml @@ -11,6 +11,7 @@ + @@ -70,7 +71,7 @@ - SELECT id, membercode, package_name, created_at, status, last_downloaded_report + SELECT id, membercode, package_name, created_at, status, deactivated_at, last_downloaded_report FROM signals_user_packages WHERE membercode IS NOT NULL AND LEFT(membercode, 6) = #{userId} @@ -88,9 +89,17 @@ + +