Merge branch 'SUPPORT-8943_seamlessness' into feature/SUPPORT-9037_fix_rejection

This commit is contained in:
gulnaz 2025-03-25 09:44:48 +03:00
commit daaa4a867c
3 changed files with 25 additions and 5 deletions

View file

@ -46,6 +46,7 @@ import ru.micord.ervu.account_applications.dto.password.ResetPasswordProcessRequ
import ru.micord.ervu.account_applications.dto.password.UserIdInfo;
import ru.micord.ervu.account_applications.enums.ProcessKey;
import ru.micord.ervu.account_applications.security.context.SecurityContext;
import ru.micord.ervu.account_applications.service.RoleServiceImpl;
import ru.micord.ervu.account_applications.service.UserApplicationListService;
/**
@ -60,15 +61,17 @@ public class AdminController {
private final RestTemplate restTemplate;
private final SecurityContext securityContext;
private final UserApplicationListService applicationListService;
private final RoleServiceImpl roleService;
@Value("${ervu.url}")
private String ervuUrl;
public AdminController(RestTemplate restTemplate, SecurityContext securityContext,
UserApplicationListService applicationListService) {
UserApplicationListService applicationListService, RoleServiceImpl roleService) {
this.restTemplate = restTemplate;
this.securityContext = securityContext;
this.applicationListService = applicationListService;
this.roleService = roleService;
}
@PostMapping(value = "", consumes = MediaType.APPLICATION_JSON_VALUE)
@ -110,7 +113,9 @@ public class AdminController {
.stream()
.map(Role::new)
.collect(Collectors.toList());
Account account = new Account(dto.accountId(), dto.removeRoles(), rolesList);
List<String> removedRoleIds = roleService.fetchRemovedRoleIds(dto.accountId(), dto.roles());
Account account = new Account(dto.accountId(), removedRoleIds, rolesList);
EditPersonProcessRequest request = new EditPersonProcessRequest(ProcessKey.EDIT_ROLES.getValue(),
getUserId(), new EditData(account));
return doRequestAndSaveTraceId(request, dto.appNumber());

View file

@ -1,6 +1,6 @@
package ru.micord.ervu.account_applications.dto.edit;
import java.util.List;
import java.util.Set;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import javax.validation.constraints.NotNull;
@ -9,6 +9,5 @@ import javax.validation.constraints.NotNull;
* @author Emir Suleimanov
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public record EditRolesDto(@NotNull long appNumber, @NotNull String accountId,
List<String> removeRoles, List<String> roles) {
public record EditRolesDto(@NotNull long appNumber, @NotNull String accountId, Set<String> roles) {
}

View file

@ -6,12 +6,15 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.type.CollectionType;
import model.grid.GridRow;
import model.grid.GridRows;
import org.springframework.stereotype.Service;
import org.springframework.web.util.UriComponentsBuilder;
import ru.micord.ervu.account_applications.component.exception.UserDataLoadException;
import ru.micord.ervu.account_applications.component.model.Role;
import ru.micord.ervu.account_applications.security.context.SecurityContext;
import ru.micord.ervu.account_applications.service.constant.PathConstant;
@ -19,6 +22,7 @@ import ru.micord.ervu.account_applications.service.constant.PathConstant;
/**
* @author Adel Kalimullin
*/
@Service
public class RoleServiceImpl extends AbstractUserDataService {
private static final String ROLES = "roles";
@ -33,6 +37,18 @@ public class RoleServiceImpl extends AbstractUserDataService {
return objectToMap(roles);
}
public List<String> fetchRemovedRoleIds(String accountId, Set<String> newRoleIds) {
try {
return fetchRolesByAccountId(accountId).stream()
.map(Role::getId)
.filter(id -> !newRoleIds.contains(id))
.toList();
}
catch (Exception e) {
throw new UserDataLoadException("Ошибка при получении ролей пользователя", e);
}
}
private List<Role> fetchRolesByAccountId(Object accountId) throws IOException, InterruptedException {
String url = UriComponentsBuilder.fromHttpUrl(ervuUrl)
.path(PathConstant.ACCOUNTS_PATH)