Added database registration for packege and subject
This commit is contained in:
parent
ace8bd46e4
commit
2b5bd8c120
5 changed files with 110 additions and 1 deletions
9
src/main/java/ru/nbch/credit_tracker/enums/Status.java
Normal file
9
src/main/java/ru/nbch/credit_tracker/enums/Status.java
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
package ru.nbch.credit_tracker.enums;
|
||||
|
||||
public enum Status {
|
||||
ON_MONITORING, // пакет стоит на мониторинге в оф. сервисе
|
||||
REJECTED, // отклонен на стороне НБКИ
|
||||
PROCESSING, // идет поиск телефона и расчет флагов по пакету
|
||||
DELETED, // пакет удален
|
||||
ERROR; // произошла ошибка при постановке пакета на мониторинг в оф. сервис
|
||||
}
|
||||
|
|
@ -11,6 +11,7 @@ import ru.nbch.credit_tracker.entities.monitoring_request.MonitoringRequest;
|
|||
import ru.nbch.credit_tracker.enums.SignalError;
|
||||
import ru.nbch.credit_tracker.exceptions.ValidationException;
|
||||
import ru.nbch.credit_tracker.service.FailureAnswerGenerator;
|
||||
import ru.nbch.credit_tracker.service.SignalService;
|
||||
import ru.nbch.credit_tracker.service.scoring.AuthorizationService;
|
||||
import ru.nbch.credit_tracker.service.xml.IXmlProcessor;
|
||||
import ru.nbch.credit_tracker.service.xml.XmlUtilService;
|
||||
|
|
@ -25,15 +26,18 @@ public class SignalFacade {
|
|||
|
||||
private final CreditTrackerSettings config;
|
||||
private final AuthorizationService authorizationService;
|
||||
private final SignalService signalService;
|
||||
private final FailureAnswerGenerator failureAnswerGenerator;
|
||||
private final XmlUtilService xmlUtilService;
|
||||
|
||||
public SignalFacade(CreditTrackerSettings config,
|
||||
AuthorizationService authorizationService,
|
||||
SignalService signalService,
|
||||
FailureAnswerGenerator failureAnswerGenerator,
|
||||
XmlUtilService xmlUtilService) {
|
||||
this.config = config;
|
||||
this.authorizationService = authorizationService;
|
||||
this.signalService = signalService;
|
||||
this.failureAnswerGenerator = failureAnswerGenerator;
|
||||
this.xmlUtilService = xmlUtilService;
|
||||
}
|
||||
|
|
@ -93,6 +97,7 @@ public class SignalFacade {
|
|||
validateRequestByXsd(zipInputStream);
|
||||
|
||||
} catch (ValidationException e) {
|
||||
// записать REJECTED
|
||||
return getBadResponse(SignalError.ERROR_011); // TODO вычленять конкретный элемент
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
|
|
@ -100,17 +105,27 @@ public class SignalFacade {
|
|||
return ResponseEntity.internalServerError().body(new PathResource(errorPath));
|
||||
}
|
||||
|
||||
MonitoringRequest monitoringRequest;
|
||||
// Xml валиден. Производим анмаршаллинг
|
||||
try (ZipInputStream zipInputStream = new ZipInputStream(file.getInputStream())) {
|
||||
zipInputStream.getNextEntry();
|
||||
|
||||
IXmlProcessor processor = xmlUtilService.createJaxbProcessor();
|
||||
MonitoringRequest monitoringRequest = processor.read(zipInputStream, MonitoringRequest.class);
|
||||
monitoringRequest = processor.read(zipInputStream, MonitoringRequest.class);
|
||||
|
||||
if (!authorizationService.hasAuthorization(monitoringRequest.getUserId(), monitoringRequest.getPassword())) {
|
||||
// записать REJECTED
|
||||
return getBadResponse(SignalError.ERROR_005);
|
||||
}
|
||||
|
||||
if (signalService.isPackageNotUnique(monitoringRequest)) {
|
||||
// записать REJECTED
|
||||
// signalService.insertPackage(monitoringRequest, Status.REJECTED);
|
||||
return getBadResponse(SignalError.ERROR_007);
|
||||
}
|
||||
|
||||
signalService.registerPackage(monitoringRequest);
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
String errorPath = failureAnswerGenerator.generateFailureAnswer(SignalError.ERROR_001);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
package ru.nbch.credit_tracker.mapper.signal;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import ru.nbch.credit_tracker.entities.monitoring_request.MonitoringRequest;
|
||||
import ru.nbch.credit_tracker.entities.monitoring_request.Subject;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface SignalMapper {
|
||||
|
||||
boolean isPackageNotUnique(@Param("userId") String userId, @Param("packageName") String packageName);
|
||||
|
||||
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);
|
||||
|
||||
void insertPackage(@Param("request") MonitoringRequest request, @Param("creadedAt") LocalDateTime creadedAt, @Param("status") String status);
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
package ru.nbch.credit_tracker.service;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.nbch.credit_tracker.entities.monitoring_request.MonitoringRequest;
|
||||
import ru.nbch.credit_tracker.enums.Status;
|
||||
import ru.nbch.credit_tracker.mapper.signal.SignalMapper;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Service
|
||||
public class SignalService {
|
||||
private final SignalMapper mapper;
|
||||
|
||||
public SignalService(SignalMapper mapper) {
|
||||
this.mapper = mapper;
|
||||
}
|
||||
|
||||
public boolean isPackageNotUnique(MonitoringRequest request) {
|
||||
String userId = request.getUserId();
|
||||
return mapper.isPackageNotUnique(userId.substring(0, 6),request.getPackageName());
|
||||
}
|
||||
|
||||
public void registerPackage(MonitoringRequest request) {
|
||||
Integer packageId = mapper.registerPackage(request, LocalDateTime.now(), Status.PROCESSING.name());
|
||||
mapper.registerSubjects(request.getSubjects().getSubject(), packageId);
|
||||
}
|
||||
|
||||
public void insertPackage(MonitoringRequest request, Status status) {
|
||||
mapper.insertPackage(request, LocalDateTime.now(), status.name());
|
||||
}
|
||||
}
|
||||
33
src/main/resources/mybatis/mapper/signal/SignalMapper.xml
Normal file
33
src/main/resources/mybatis/mapper/signal/SignalMapper.xml
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="ru.nbch.credit_tracker.mapper.signal.SignalMapper">
|
||||
|
||||
<select id="isPackageNotUnique" resultType="boolean">
|
||||
SELECT COUNT(*) > 0
|
||||
FROM signals_user_packages
|
||||
WHERE membercode IS NOT NULL AND LEFT(membercode, 6) = #{userId} AND package_name = #{packageName}
|
||||
</select>
|
||||
|
||||
<select id="registerPackage" resultType="java.lang.Integer" parameterType="ru.nbch.credit_tracker.entities.monitoring_request.MonitoringRequest" >
|
||||
INSERT INTO signals_user_packages (membercode, package_name, created_at, status)
|
||||
values (#{request.userId}, #{request.packageName}, #{creadedAt}, #{status})
|
||||
RETURNING id
|
||||
</select>
|
||||
|
||||
<insert id="insertPackage" parameterType="ru.nbch.credit_tracker.entities.monitoring_request.MonitoringRequest" >
|
||||
INSERT INTO signals_user_packages (membercode, package_name, created_at, status)
|
||||
values (#{request.userId}, #{request.packageName}, #{creadedAt}, #{status})
|
||||
</insert>
|
||||
|
||||
<insert id="registerSubjects" parameterType="java.util.List">
|
||||
INSERT INTO signals_phone_fid_map (subject_id, phone, fid, package_id)
|
||||
values
|
||||
<foreach collection="subjects" item="subject" separator=",">
|
||||
(#{subject.id}, #{subject.clientId}, NULL, #{packageId})
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
</mapper>
|
||||
Loading…
Add table
Reference in a new issue