SUPPORT-8474: Fix
This commit is contained in:
parent
bacf51e1d2
commit
79da353d9d
4 changed files with 294 additions and 19 deletions
179
backend/src/main/java/ervu/model/Employee.java
Normal file
179
backend/src/main/java/ervu/model/Employee.java
Normal file
|
|
@ -0,0 +1,179 @@
|
|||
package ervu.model;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
|
||||
/**
|
||||
* @author Eduard Tihomirov
|
||||
*/
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class Employee implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String prnOid;
|
||||
|
||||
private String orgOid;
|
||||
|
||||
private Boolean chief;
|
||||
|
||||
private Boolean blocked;
|
||||
|
||||
private String position;
|
||||
|
||||
private String lastName;
|
||||
|
||||
private String firstName;
|
||||
|
||||
private String middleName;
|
||||
|
||||
@JsonFormat(pattern = "dd.MM.yyyy")
|
||||
private Date birthDate;
|
||||
|
||||
private String gender;
|
||||
|
||||
private String citizenship;
|
||||
|
||||
private String snils;
|
||||
|
||||
private String inn;
|
||||
|
||||
private String birthPlace;
|
||||
|
||||
//Данные не доступны при входе юр лицом
|
||||
private String email;
|
||||
|
||||
//Данные не доступны при входе юр лицом
|
||||
private String phoneNumber;
|
||||
|
||||
public String getPrnOid() {
|
||||
return prnOid;
|
||||
}
|
||||
|
||||
public void setPrnOid(String prnOid) {
|
||||
this.prnOid = prnOid;
|
||||
}
|
||||
|
||||
public String getOrgOid() {
|
||||
return orgOid;
|
||||
}
|
||||
|
||||
public void setOrgOid(String orgOid) {
|
||||
this.orgOid = orgOid;
|
||||
}
|
||||
|
||||
public Boolean getChief() {
|
||||
return chief;
|
||||
}
|
||||
|
||||
public void setChief(Boolean chief) {
|
||||
this.chief = chief;
|
||||
}
|
||||
|
||||
public Boolean getBlocked() {
|
||||
return blocked;
|
||||
}
|
||||
|
||||
public void setBlocked(Boolean blocked) {
|
||||
this.blocked = blocked;
|
||||
}
|
||||
|
||||
public String getPosition() {
|
||||
return position;
|
||||
}
|
||||
|
||||
public void setPosition(String position) {
|
||||
this.position = position;
|
||||
}
|
||||
|
||||
public String getLastName() {
|
||||
return lastName;
|
||||
}
|
||||
|
||||
public void setLastName(String lastName) {
|
||||
this.lastName = lastName;
|
||||
}
|
||||
|
||||
public String getFirstName() {
|
||||
return firstName;
|
||||
}
|
||||
|
||||
public void setFirstName(String firstName) {
|
||||
this.firstName = firstName;
|
||||
}
|
||||
|
||||
public String getMiddleName() {
|
||||
return middleName;
|
||||
}
|
||||
|
||||
public void setMiddleName(String middleName) {
|
||||
this.middleName = middleName;
|
||||
}
|
||||
|
||||
public Date getBirthDate() {
|
||||
return birthDate;
|
||||
}
|
||||
|
||||
public void setBirthDate(Date birthDate) {
|
||||
this.birthDate = birthDate;
|
||||
}
|
||||
|
||||
public String getGender() {
|
||||
return gender;
|
||||
}
|
||||
|
||||
public void setGender(String gender) {
|
||||
this.gender = gender;
|
||||
}
|
||||
|
||||
public String getCitizenship() {
|
||||
return citizenship;
|
||||
}
|
||||
|
||||
public void setCitizenship(String citizenship) {
|
||||
this.citizenship = citizenship;
|
||||
}
|
||||
|
||||
public String getSnils() {
|
||||
return snils;
|
||||
}
|
||||
|
||||
public void setSnils(String snils) {
|
||||
this.snils = snils;
|
||||
}
|
||||
|
||||
public String getInn() {
|
||||
return inn;
|
||||
}
|
||||
|
||||
public void setInn(String inn) {
|
||||
this.inn = inn;
|
||||
}
|
||||
|
||||
public String getBirthPlace() {
|
||||
return birthPlace;
|
||||
}
|
||||
|
||||
public void setBirthPlace(String birthPlace) {
|
||||
this.birthPlace = birthPlace;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public String getPhoneNumber() {
|
||||
return phoneNumber;
|
||||
}
|
||||
|
||||
public void setPhoneNumber(String phoneNumber) {
|
||||
this.phoneNumber = phoneNumber;
|
||||
}
|
||||
}
|
||||
|
|
@ -43,9 +43,9 @@ public class OrgInfo implements Serializable {
|
|||
|
||||
private Boolean isLiquidated;
|
||||
|
||||
private EmployeeModel chiefInfo;
|
||||
private Employee chiefInfo;
|
||||
|
||||
private EmployeeModel senderInfo;
|
||||
private Employee senderInfo;
|
||||
|
||||
private String orgAgencyTerRange;
|
||||
|
||||
|
|
@ -163,19 +163,19 @@ public class OrgInfo implements Serializable {
|
|||
this.contacts = contacts;
|
||||
}
|
||||
|
||||
public EmployeeModel getChiefInfo() {
|
||||
public Employee getChiefInfo() {
|
||||
return chiefInfo;
|
||||
}
|
||||
|
||||
public void setChiefInfo(EmployeeModel chiefInfo) {
|
||||
public void setChiefInfo(Employee chiefInfo) {
|
||||
this.chiefInfo = chiefInfo;
|
||||
}
|
||||
|
||||
public EmployeeModel getSenderInfo() {
|
||||
public Employee getSenderInfo() {
|
||||
return senderInfo;
|
||||
}
|
||||
|
||||
public void setSenderInfo(EmployeeModel senderInfo) {
|
||||
public void setSenderInfo(Employee senderInfo) {
|
||||
this.senderInfo = senderInfo;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,8 +14,6 @@ public class PersonModel implements Serializable {
|
|||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String prsId;
|
||||
|
||||
private String orgOid;
|
||||
|
||||
private String lastName;
|
||||
|
|
@ -43,14 +41,6 @@ public class PersonModel implements Serializable {
|
|||
//Данные не доступны при входе юр лицом
|
||||
private String mobileNumber;
|
||||
|
||||
public String getPrsId() {
|
||||
return prsId;
|
||||
}
|
||||
|
||||
public void setPrsId(String prsId) {
|
||||
this.prsId = prsId;
|
||||
}
|
||||
|
||||
public String getOrgOid() {
|
||||
return orgOid;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,22 +11,31 @@ import java.nio.charset.StandardCharsets;
|
|||
import java.time.Duration;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.*;
|
||||
import javax.servlet.http.Cookie;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import ervu.converter.ResponseDataConverter;
|
||||
import ervu.model.Brhs;
|
||||
import ervu.model.Employee;
|
||||
import ervu.model.OrgInfo;
|
||||
import ervu.service.kafka.KafkaProducerErvuService;
|
||||
import esia.config.EsiaConfig;
|
||||
import esia.config.FormUrlencoded;
|
||||
import esia.model.EmployeeModel;
|
||||
import esia.model.EsiaTokenResponse;
|
||||
import esia.model.OrganizationModel;
|
||||
import org.apache.kafka.clients.consumer.Consumer;
|
||||
import org.apache.kafka.clients.consumer.ConsumerRecords;
|
||||
import org.apache.kafka.common.utils.Bytes;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.kafka.core.ConsumerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
|
||||
/**
|
||||
* @author Eduard Tihomirov
|
||||
|
|
@ -45,6 +54,16 @@ public class EsiaAuthService {
|
|||
@Autowired
|
||||
private UlDataService ulDataService;
|
||||
|
||||
@Autowired
|
||||
private KafkaProducerErvuService kafkaProducerErvuService;
|
||||
|
||||
@Autowired
|
||||
private ConsumerFactory<String, Bytes> consumerFactory;
|
||||
|
||||
@Autowired
|
||||
private ResponseDataConverter converter;
|
||||
|
||||
|
||||
public String generateAuthCodeUrl() {
|
||||
try {
|
||||
String clientId = esiaConfig.getClientId();
|
||||
|
|
@ -306,4 +325,91 @@ public class EsiaAuthService {
|
|||
throw new RuntimeException(httpResponse.statusCode() + " " + httpResponse.body());
|
||||
}
|
||||
}
|
||||
|
||||
public String getErvuId(String accessToken, HttpServletResponse response) {
|
||||
OrganizationModel organizationModel = ulDataService.getOrganizationModel(accessToken);
|
||||
EmployeeModel employeeModel = ulDataService.getEmployeeModel(accessToken);
|
||||
EmployeeModel chiefModel = ulDataService.getChiefEmployeeModel(accessToken);
|
||||
OrgInfo orgInfo = copyToOrgInfo(organizationModel, employeeModel, chiefModel);
|
||||
kafkaProducerErvuService.sendRequest(orgInfo);
|
||||
|
||||
try (Consumer<String, Bytes> consumer =
|
||||
consumerFactory.createConsumer("ul-ervu-id", null)) {
|
||||
consumer.subscribe(Collections.singletonList(replyTopic));
|
||||
ConsumerRecords<String, Bytes> consumerRecords = consumer.poll(Duration.ofSeconds(10));
|
||||
consumerRecords.forEach(record -> {
|
||||
|
||||
Object responseData = new Object();
|
||||
/*
|
||||
//первый вариант: если ответ придет в виде json, десериализатор для консьюмера надо
|
||||
// поменять
|
||||
FileInfoResponse responseData = record.value();
|
||||
|
||||
// второй вариант: если ответ придет в формате protobuf, необходимо сгенерировать бины
|
||||
// перед этим по прото-файлам
|
||||
SummonsResponseData responseData = SummonsResponseData.parseFrom(record.value().get());
|
||||
*/
|
||||
Cookie cookie = new Cookie("ervu_id", responseData.toString());
|
||||
cookie.setHttpOnly(true);
|
||||
cookie.setSecure(true);
|
||||
cookie.setPath("/");
|
||||
response.addCookie(cookie);
|
||||
});
|
||||
consumer.commitSync();
|
||||
}
|
||||
}
|
||||
|
||||
private OrgInfo copyToOrgInfo(OrganizationModel organizationModel, EmployeeModel employeeModel, EmployeeModel chiefModel ) {
|
||||
OrgInfo orgInfo = new OrgInfo();
|
||||
orgInfo.setChiefInfo(copyToEmployee(chiefModel));
|
||||
orgInfo.setSenderInfo(copyToEmployee(employeeModel));
|
||||
orgInfo.setBrhs(
|
||||
(Brhs[]) Arrays.stream(organizationModel.getBrhs()).map(brhsModel -> {
|
||||
Brhs brhs = new Brhs();
|
||||
brhs.setName(brhsModel.getName());
|
||||
brhs.setBrhOid(brhsModel.getBrhOid());
|
||||
brhs.setKpp(brhsModel.getKpp());
|
||||
brhs.setLeg(brhsModel.getLeg());
|
||||
brhs.setAddresses(brhsModel.getAddresses().getElements());
|
||||
brhs.setContacts(brhsModel.getContacts().getElements());
|
||||
return brhs;
|
||||
}).toArray());
|
||||
orgInfo.setAddresses(organizationModel.getAddresses().getElements());
|
||||
orgInfo.setContacts(organizationModel.getContacts().getElements());
|
||||
orgInfo.setInn(organizationModel.getInn());
|
||||
orgInfo.setOrgFullName(organizationModel.getFullName());
|
||||
orgInfo.setOrgTypeLeg(organizationModel.getLeg());
|
||||
orgInfo.setKpp(organizationModel.getKpp());
|
||||
orgInfo.setLiquidated(organizationModel.getIsLiquidated());
|
||||
orgInfo.setOgrn(organizationModel.getOgrn());
|
||||
orgInfo.setOrgOid(organizationModel.getOid());
|
||||
orgInfo.setOrgShortName(organizationModel.getShortName());
|
||||
orgInfo.setStaffCount(organizationModel.getStaffCount());
|
||||
orgInfo.setBranchesCount((long) orgInfo.getBrhs().length);
|
||||
orgInfo.setOrgType(organizationModel.getType());
|
||||
orgInfo.setOrgAgencyTerRange(organizationModel.getAgencyTerRange());
|
||||
orgInfo.setOrgAgencyType(organizationModel.getAgencyType());
|
||||
return orgInfo;
|
||||
}
|
||||
|
||||
private Employee copyToEmployee(EmployeeModel employeeModel) {
|
||||
Employee employee = new Employee();
|
||||
employee.setBirthDate(employeeModel.getPerson().getBirthDate());
|
||||
employee.setFirstName(employeeModel.getPerson().getFirstName());
|
||||
employee.setLastName(employeeModel.getPerson().getLastName());
|
||||
employee.setMiddleName(employeeModel.getPerson().getMiddleName());
|
||||
employee.setBlocked(employeeModel.getBlocked());
|
||||
employee.setChief(employeeModel.getChief());
|
||||
employee.setCitizenship(employeeModel.getPerson().getCitizenship());
|
||||
employee.setEmail(employeeModel.getPerson().getEmail());
|
||||
employee.setPhoneNumber(employeeModel.getPerson().getMobileNumber());
|
||||
employee.setBirthPlace(employeeModel.getPerson().getBirthPlace());
|
||||
employee.setGender(employeeModel.getPerson().getGender());
|
||||
employee.setInn(employeeModel.getPerson().getInn());
|
||||
employee.setSnils(employeeModel.getPerson().getSnils());
|
||||
employee.setPosition(employeeModel.getPosition());
|
||||
employee.setPrnOid(employeeModel.getPrnOid());
|
||||
employee.setOrgOid(employeeModel.getOrgOid());
|
||||
return employee;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue