Added deleting package from internal service
This commit is contained in:
parent
b6f4f47715
commit
a78e49f1e0
8 changed files with 109 additions and 2 deletions
|
|
@ -7,6 +7,7 @@ import org.springframework.web.bind.annotation.*;
|
|||
import org.springframework.web.multipart.MultipartFile;
|
||||
import ru.nbch.credit_tracker.entities.request.active_packages.MonitoringActivePackagesRequest;
|
||||
import ru.nbch.credit_tracker.entities.response.active_packages.MonitoringActivePackagesResponse;
|
||||
import ru.nbch.credit_tracker.entities.response.success.MonitoringPackageDeleteResponse;
|
||||
import ru.nbch.credit_tracker.facade.SignalFacade;
|
||||
|
||||
@RestController
|
||||
|
|
@ -24,10 +25,15 @@ public class SignalController {
|
|||
return signalFacade.setupMonitoring(file);
|
||||
}
|
||||
|
||||
@PostMapping(value = "active_packages", consumes = MediaType.APPLICATION_XML_VALUE, produces = MediaType.APPLICATION_XML_VALUE)
|
||||
@PostMapping(value = "/active_packages", consumes = MediaType.APPLICATION_XML_VALUE, produces = MediaType.APPLICATION_XML_VALUE)
|
||||
public ResponseEntity<MonitoringActivePackagesResponse> findActivePackages(@RequestBody MonitoringActivePackagesRequest activePackagesRequest) {
|
||||
return signalFacade.findActivePackages(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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,25 @@
|
|||
package ru.nbch.credit_tracker.entities.response.errors;
|
||||
|
||||
import jakarta.xml.bind.annotation.*;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "MonitoringPackageDeleteResponse", propOrder = {
|
||||
"status",
|
||||
"errorCode",
|
||||
"errorText"
|
||||
})
|
||||
@XmlRootElement(name = "MonitoringPackageDeleteResponse")
|
||||
public class MonitoringPackageDeleteError implements CommonError {
|
||||
|
||||
@XmlElement(name = "Status", required = true)
|
||||
protected String status;
|
||||
@XmlElement(name = "ErrorCode",required = true)
|
||||
protected String errorCode;
|
||||
@XmlElement(name = "ErrorText",required = true)
|
||||
protected String errorText;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
package ru.nbch.credit_tracker.entities.response.success;
|
||||
|
||||
import jakarta.xml.bind.annotation.*;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
@XmlType(name = "MonitoringPackageDeleteResponse", propOrder = {
|
||||
"packageName",
|
||||
"status",
|
||||
"deactivatedAt"
|
||||
})
|
||||
@XmlRootElement(name = "MonitoringPackageDeleteResponse")
|
||||
public class MonitoringPackageDeleteResponse {
|
||||
|
||||
@XmlElement(name = "PackageName", required = true)
|
||||
protected String packageName;
|
||||
@XmlElement(name = "Status", required = true)
|
||||
protected String status;
|
||||
@XmlElement(name = "deactivated_at", required = true)
|
||||
protected String deactivatedAt;
|
||||
}
|
||||
|
|
@ -18,6 +18,8 @@ public enum SignalError {
|
|||
|
||||
ERROR_013("013", "На стороне сервиса произошла ошибка, попробуйте повторить запрос позже или сообщите в техническую поддержку"),
|
||||
ERROR_015("015", "Клиент с указанным membercode не найден"),
|
||||
ERROR_016("016", "Нет активного пакета с именем "),
|
||||
ERROR_017("017", "При обработке запроса произошла ошибка. Повторите запрос позже или обратитесь в службу технической поддержки"), // TODO get rid of duplicate?
|
||||
|
||||
ERROR_100("100", "Непредвиденная ошибка");
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@ import ru.nbch.credit_tracker.entities.request.monitoring_request.MonitoringRequ
|
|||
import ru.nbch.credit_tracker.entities.request.monitoring_request.Subject;
|
||||
import ru.nbch.credit_tracker.entities.response.active_packages.MonitoringActivePackagesResponse;
|
||||
import ru.nbch.credit_tracker.entities.response.errors.MonitoringActivePackagesError;
|
||||
import ru.nbch.credit_tracker.entities.response.errors.MonitoringPackageDeleteError;
|
||||
import ru.nbch.credit_tracker.entities.response.success.MonitoringPackageDeleteResponse;
|
||||
import ru.nbch.credit_tracker.entities.response.success.MonitoringResponse;
|
||||
import ru.nbch.credit_tracker.entities.signal_package.Signals;
|
||||
import ru.nbch.credit_tracker.enums.SignalError;
|
||||
|
|
@ -280,4 +282,20 @@ public class SignalFacade {
|
|||
throw new SignalErrorException(SignalError.ERROR_013, null, new MonitoringActivePackagesError(), false);
|
||||
}
|
||||
}
|
||||
|
||||
public ResponseEntity<MonitoringPackageDeleteResponse> deletePackage(String username, String packageName) {
|
||||
try {
|
||||
if(!signalService.isPackageExists(username, packageName)) {
|
||||
throw new SignalErrorException(SignalError.ERROR_016, packageName, new MonitoringPackageDeleteError(), true);
|
||||
}
|
||||
MonitoringPackageDeleteResponse response = signalService.deletePackage(username, packageName);
|
||||
return ResponseEntity.ok(response);
|
||||
} catch (Exception e) {
|
||||
if (e instanceof SignalErrorException) {
|
||||
throw (SignalErrorException) e;
|
||||
}
|
||||
log.error(e.getMessage(), e);
|
||||
throw new SignalErrorException(SignalError.ERROR_017, null, new MonitoringPackageDeleteError(), false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,6 +14,10 @@ public interface SignalMapper {
|
|||
|
||||
boolean isPackageNotUnique(@Param("userId") String userId, @Param("packageName") String packageName);
|
||||
|
||||
boolean isPackageExists(@Param("userId") String userId, @Param("packageName") String packageName, @Param("status") String status);
|
||||
|
||||
void deletePackage(@Param("userId") String userId, @Param("packageName") String packageName, @Param("status") String newStatus, @Param("previousStatus") String previousStatus, @Param("deactivatedAt") LocalDateTime deactivatedAt);
|
||||
|
||||
Integer registerPackage(@Param("request") MonitoringRequest request, @Param("creadedAt") LocalDateTime creadedAt, @Param("status") String status);
|
||||
|
||||
void registerSubjects(@Param("subjects") List<Subject> subjects, @Param("packageId") Integer packageId);
|
||||
|
|
@ -28,5 +32,5 @@ public interface SignalMapper {
|
|||
|
||||
SignalService.PackageData findPackageData(@Param("id") Integer id);
|
||||
|
||||
List<SignalService.PackageData> findPackageDataList(@Param("userId") String userId);
|
||||
List<SignalService.PackageData> findPackageDataList(@Param("userId") String userId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import ru.nbch.credit_tracker.entities.request.monitoring_request.MonitoringRequ
|
|||
import ru.nbch.credit_tracker.entities.response.active_packages.MonitoringActivePackagesResponse;
|
||||
import ru.nbch.credit_tracker.entities.response.active_packages.Package;
|
||||
import ru.nbch.credit_tracker.entities.response.active_packages.Packages;
|
||||
import ru.nbch.credit_tracker.entities.response.success.MonitoringPackageDeleteResponse;
|
||||
import ru.nbch.credit_tracker.entities.signal_package.Auth;
|
||||
import ru.nbch.credit_tracker.entities.signal_package.Person;
|
||||
import ru.nbch.credit_tracker.entities.signal_package.Signals;
|
||||
|
|
@ -180,6 +181,21 @@ public class SignalService {
|
|||
return activePackages;
|
||||
}
|
||||
|
||||
public boolean isPackageExists(String username, String packageName) {
|
||||
return mapper.isPackageExists(username.substring(0, 6), packageName, Status.ON_MONITORING.name());
|
||||
}
|
||||
|
||||
public MonitoringPackageDeleteResponse deletePackage(String username, String packageName) {
|
||||
LocalDateTime deactivatedAt = LocalDateTime.now();
|
||||
mapper.deletePackage(username.substring(0, 6), packageName, Status.DELETED.name(), Status.ON_MONITORING.name(), deactivatedAt);
|
||||
|
||||
MonitoringPackageDeleteResponse deleteResponse = new MonitoringPackageDeleteResponse();
|
||||
deleteResponse.setStatus("Deleted");
|
||||
deleteResponse.setPackageName(packageName);
|
||||
deleteResponse.setDeactivatedAt(deactivatedAt.toString());
|
||||
return deleteResponse;
|
||||
}
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public static class PackageData {
|
||||
|
|
|
|||
|
|
@ -23,6 +23,18 @@
|
|||
WHERE membercode IS NOT NULL AND LEFT(membercode, 6) = #{userId} AND package_name = #{packageName}
|
||||
</select>
|
||||
|
||||
<select id="isPackageExists" resultType="boolean">
|
||||
SELECT COUNT(*) > 0
|
||||
FROM signals_user_packages
|
||||
WHERE membercode IS NOT NULL AND LEFT(membercode, 6) = #{userId} AND package_name = #{packageName} AND status = #{status}
|
||||
</select>
|
||||
|
||||
<update id="deletePackage">
|
||||
UPDATE signals_user_packages
|
||||
SET status = #{status}, deactivated_at = #{deactivatedAt}
|
||||
WHERE membercode IS NOT NULL AND LEFT(membercode, 6) = #{userId} AND package_name = #{packageName} AND status = #{previousStatus}
|
||||
</update>
|
||||
|
||||
<select id="registerPackage" resultType="java.lang.Integer" parameterType="ru.nbch.credit_tracker.entities.request.monitoring_request.MonitoringRequest" >
|
||||
INSERT INTO signals_user_packages (membercode, package_name, created_at, status)
|
||||
values (#{request.userId}, #{request.packageName}, #{creadedAt}, #{status})
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue