http://jira.mfd.msk:8088/browse/BKI-3210 Added find all packages logic; Updated version to 1.12

This commit is contained in:
Mikhail Trofimov 2025-09-15 12:35:25 +03:00
parent 5ec5c407ab
commit a1a602d9e8
11 changed files with 76 additions and 7 deletions

View file

@ -1,5 +1,5 @@
#commons
APP_VERSION=1.11
APP_VERSION=1.12
REGISTRY_URL=rh8-vm3.nbki.msk:5000
JMX_PORT=
JMX_HOSTNAME=

View file

@ -10,7 +10,7 @@
</parent>
<groupId>ru.nbch</groupId>
<artifactId>credit-tracker</artifactId>
<version>1.11</version>
<version>1.12</version>
<name>credit_tracker</name>
<description>Credit Tracker Application</description>

View file

@ -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<MonitoringActivePackagesResponse> findAllPackages(@RequestBody MonitoringActivePackagesRequest activePackagesRequest) {
return signalFacade.findAllPackages(activePackagesRequest);
}
@PostMapping(value = "/delete", params = {"username", "packageName"}, produces = MediaType.APPLICATION_XML_VALUE)
public ResponseEntity<MonitoringPackageDeleteResponse> deletePackage(@RequestParam("username") String username, @RequestParam("packageName") String packageName) {
return signalFacade.deletePackage(username, packageName);

View file

@ -15,5 +15,6 @@ public class UserPackage {
private String packageName;
private LocalDateTime createdAt;
private String status;
private LocalDateTime deactivatedAt;
private String lastDownloadedReport;
}

View file

@ -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;
}

View file

@ -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;

View file

@ -281,6 +281,43 @@ public class SignalFacade {
}
}
public ResponseEntity<MonitoringActivePackagesResponse> findAllPackages(MonitoringActivePackagesRequest activePackagesRequest) {
try {
AuthorizationService.AuthResult authResult = authorizationService.findAuthInfo(activePackagesRequest.getUserId(), activePackagesRequest.getPassword());
if (!authResult.isSuccess()) {
throw clientExcp(authResult.getError(), XmlErrorFormat.MonitoringActivePackagesError);
}
List<UserPackage> 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<MonitoringPackageDeleteResponse> deletePackage(String username, String packageName) {
try {
if (!signalService.isPackageExists(username, packageName)) {

View file

@ -29,4 +29,6 @@ public interface UserPackageMapper {
List<UserPackage> findUserPackages(@Param("userId") String userId, @Param("statuses") List<String> status);
List<UserPackage> findAllPackagesByStatus(@Param("status") String status);
List<UserPackage> findAllPackagesByUserId(@Param("userId") String userId);
}

View file

@ -310,6 +310,10 @@ public class SignalService {
return userPackageService.findUserPackages(userId, Status.ON_MONITORING, Status.PROCESSING);
}
public List<UserPackage> findAllPackages(String userId) {
return userPackageService.findAllPackagesByUserId(userId);
}
public boolean isPackageExists(String username, String packageName) {
return userPackageService.isPackageExists(username, packageName, Status.ON_MONITORING);
}

View file

@ -54,6 +54,10 @@ public class UserPackageService {
return mapper.findUserPackages(userId.substring(0, 6), Arrays.stream(status).map(Enum::name).toList());
}
public List<UserPackage> findAllPackagesByUserId(String userId) {
return mapper.findAllPackagesByUserId(userId.substring(0, 6));
}
public List<UserPackage> findAllPackagesByStatus(Status status) {
return mapper.findAllPackagesByStatus(status.name());
}

View file

@ -11,6 +11,7 @@
<result property="packageName" column="package_name"/>
<result property="createdAt" column="created_at"/>
<result property="status" column="status"/>
<result property="deactivatedAt" column="deactivated_at"/>
<result property="lastDownloadedReport" column="last_downloaded_report"/>
</resultMap>
@ -70,7 +71,7 @@
<select id="findPackage" resultMap="packageDataResultMap"
resultType="ru.nbch.credit_tracker.entities.dto.UserPackage">
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 id = #{id}
LIMIT 1
@ -78,7 +79,7 @@
<select id="findUserPackages" resultMap="packageDataResultMap"
resultType="ru.nbch.credit_tracker.entities.dto.UserPackage">
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 @@
</foreach>
</select>
<select id="findAllPackagesByUserId" resultMap="packageDataResultMap"
resultType="ru.nbch.credit_tracker.entities.dto.UserPackage">
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}
</select>
<select id="findAllPackagesByStatus" resultMap="packageDataResultMap"
resultType="ru.nbch.credit_tracker.entities.dto.UserPackage">
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 status = #{status}
</select>