SUPPORT-9104: create request dtos

This commit is contained in:
gulnaz 2025-04-11 17:21:36 +03:00
parent e5af1e0f70
commit eecd976d53
22 changed files with 218 additions and 141 deletions

View file

@ -1,9 +1,13 @@
package ru.micord.ervu.account_applications.component.rpc;
import java.util.List;
import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import ru.micord.ervu.account_applications.dao.UserApplicationListDao;
import ru.micord.ervu.account_applications.service.RoleServiceImpl;
import ru.cg.webbpm.modules.webkit.annotations.RpcCall;
import ru.cg.webbpm.modules.webkit.annotations.RpcService;
@ -18,6 +22,8 @@ public class UserApplicationListRpcService extends Behavior {
@Autowired
private UserApplicationListDao applicationListDao;
@Autowired
private RoleServiceImpl roleService;
@RpcCall
public void saveTraceId(String traceId, long appNumber) {
@ -29,4 +35,9 @@ public class UserApplicationListRpcService extends Behavior {
public void saveAgreedStatus(long appNumber) {
applicationListDao.saveAgreedStatus(appNumber);
}
@RpcCall
public List<String> getRemovedRoleIds(String accountId, Set<String> roleIds) {
return roleService.fetchRemovedRoleIds(accountId, roleIds);
}
}

View file

@ -11,10 +11,28 @@ import {HttpClient} from "@angular/common/http";
import {FormField} from "../field/FormField";
import {AuthorizationService} from "../../../modules/app/service/authorization.service";
import {ApplicationKind} from "../enum/ApplicationKind";
import {ProcessRequest} from "./request/ProcessRequest";
import {ProcessKey} from "../enum/ProcessKey";
import {ProcessResponse} from "./response/ProcessResponse";
import {UserApplicationListRpcService} from "../../../generated/ru/micord/ervu/account_applications/component/rpc/UserApplicationListRpcService";
import {Account} from "./dto/Account";
import {Person} from "./dto/Person";
import {Credential} from "./dto/create/Credential";
import {Roles} from "./dto/create/Roles";
import {CreateAccountRequest} from "./dto/create/CreateAccountRequest";
import {CreateAccountData} from "./dto/create/CreateAccountData";
import {Role} from "./dto/Role";
import {EditPersonData} from "./dto/edit/EditPersonData";
import {EditPersonRequest} from "./dto/edit/EditPersonRequest";
import {EditAccountData} from "./dto/edit/EditAccountData";
import {EditAccountRequest} from "./dto/edit/EditAccountRequest";
import {ChangeActivationData} from "./dto/activation/ChangeActivationData";
import {ChangeActivationRequest} from "./dto/activation/ChangeActivationRequest";
import {EditRolesAccount} from "./dto/edit/EditRolesAccount";
import {EditRolesData} from "./dto/edit/EditRolesData";
import {EditRolesRequest} from "./dto/edit/EditRolesRequest";
import {ResetPasswordAccount} from "./dto/password/ResetPasswordAccount";
import {ResetPasswordData} from "./dto/password/ResetPasswordData";
import {ResetPasswordRequest} from "./dto/password/ResetPasswordRequest";
@AnalyticalScope(SaveButton)
export class UserManagementService extends Behavior {
@ -42,50 +60,86 @@ export class UserManagementService extends Behavior {
return;
}
let kind = this.applicationKind.getValue();
let formJson = this.collectData();
let request;
let processKey;
switch (kind) {
case ApplicationKind.CREATE_USER:
request = ProcessRequest.CREATE;
processKey = ProcessKey.CREATE;
let createData = new CreateAccountData();
createData.credential = this.populateDto(new Credential(), formJson);
createData.account = this.populateDto(new Account(), formJson);
createData.person = this.populateDto(new Person(), formJson);
let roles = new Roles();
roles.rolesList = formJson['rolesList'].map(id => {
let role = new Role();
role.id = id;
return role;
});
createData.roles = roles;
request = new CreateAccountRequest();
request.data = createData;
request.processKey = ProcessKey.CREATE;
break;
case ApplicationKind.EDIT_USER_MAIN:
request = ProcessRequest.EDIT_PERSON;
processKey = ProcessKey.EDIT_PERSON;
let editPersonData = new EditPersonData();
editPersonData.accountId = formJson['accountId'];
editPersonData.personData = this.populateDto(new Person(), formJson);
request = new EditPersonRequest();
request.data = editPersonData;
request.processKey = ProcessKey.EDIT_PERSON;
break;
case ApplicationKind.EDIT_USER_ACCOUNT:
request = ProcessRequest.EDIT_ACCOUNT;
processKey = ProcessKey.EDIT_ACCOUNT;
let editAccountData = new EditAccountData();
let account = this.populateDto(new Account(), formJson);
account.id = formJson['accountId'];
editAccountData.account = account;
request = new EditAccountRequest();
request.data = editAccountData;
request.processKey = ProcessKey.EDIT_ACCOUNT;
break;
case ApplicationKind.EDIT_USER_ROLES:
request = ProcessRequest.EDIT_ROLES;
processKey = ProcessKey.EDIT_ROLES;
let editRolesAccount = new EditRolesAccount();
let accountId = formJson['accountId'];
let rolesList = formJson['rolesList'];
editRolesAccount.accountId = accountId;
editRolesAccount.rolesList = rolesList.map(id => {
let role = new Role();
role.id = id;
return role;
});
this.rpc.getRemovedRoleIds(accountId, rolesList)
.then(list => editRolesAccount.removeRoles = list);
let editRolesData = new EditRolesData();
editRolesData.account = editRolesAccount;
request = new EditRolesRequest();
request.data = editRolesData;
request.processKey = ProcessKey.EDIT_ROLES;
break;
case ApplicationKind.BLOCK_USER:
request = ProcessRequest.CHANGE_ACTIVATION;
processKey = ProcessKey.DEACTIVATE;
let deactivationData = new ChangeActivationData();
deactivationData.accountIdList = [formJson['accountId']];
request = new ChangeActivationRequest();
request.data = deactivationData;
request.processKey = ProcessKey.DEACTIVATE;
break;
case ApplicationKind.UNBLOCK_USER:
request = ProcessRequest.CHANGE_ACTIVATION;
processKey = ProcessKey.ACTIVATE;
let activationData = new ChangeActivationData();
activationData.accountIdList = [formJson['accountId']];
request = new ChangeActivationRequest();
request.data = activationData;
request.processKey = ProcessKey.ACTIVATE;
break;
case ApplicationKind.RESET_PASSWORD:
request = ProcessRequest.RESET_PASSWORD;
processKey = ProcessKey.RESET_PASSWORD;
let resetPasswordAccount = new ResetPasswordAccount();
resetPasswordAccount.id = formJson['accountId'];
let resetPasswordData = new ResetPasswordData();
resetPasswordData.account = resetPasswordAccount;
request = new ResetPasswordRequest();
request.data = resetPasswordData;
request.processKey = ProcessKey.RESET_PASSWORD;
break;
}
let formJson = this.collectData();
this.populateRequest(request, formJson);
if (request.data.account && request.data.account.id) {
request.data.account.id = formJson['accountId'];
}
else if (request.data.accountIdList) {
request.data.accountIdList = [formJson['accountId']];
}
request.processKey = processKey;
request.userId = authService.getUserId();
this.doRequest(request, formJson['appNumber']);
}
@ -106,25 +160,13 @@ export class UserManagementService extends Behavior {
return jsonObj;
}
private populateRequest(request: any, jsonObj: any) {
Object.keys(request).forEach(key => {
if (key === 'rolesList') {
if (jsonObj[key]) {
request[key] = jsonObj[key].map(id => ({
id: id,
finish: ''
}));
}
}
else if (typeof request[key] === 'object' && !Array.isArray(request[key])) {
this.populateRequest(request[key], jsonObj);
}
else {
if (jsonObj[key]) {
request[key] = jsonObj[key];
}
private populateDto(dto: any, jsonObj: any): any {
Object.keys(dto).forEach(key => {
if (jsonObj[key]) {
dto[key] = jsonObj[key]
}
});
return dto;
}
private doRequest(request: any, appNumber: number): void {

View file

@ -0,0 +1,10 @@
export class Account {
public id: string;
public schema: string = "Account";
public "user-domain": string = "";
public position: string = "";
public enabled: boolean = true;
public esiaAccount: boolean = false;
public start: string = "";
public finish: string = "";
}

View file

@ -0,0 +1,12 @@
export class Person {
public id: string = "";
public surname: string = "";
public firstname: string = "";
public middlename: string = "";
public email: string = "";
public birthdate: string = "";
public snils: string = "";
public ipAddresses: string[] = [];
public secondFactorEnabled: boolean = false;
public sex: string = "";
}

View file

@ -0,0 +1,4 @@
export class Role {
public id: string;
public finish: string = "";
}

View file

@ -0,0 +1,3 @@
export class ChangeActivationData {
public accountIdList: string[];
}

View file

@ -0,0 +1,7 @@
import {ChangeActivationData} from "./ChangeActivationData";
export class ChangeActivationRequest {
public processKey: string;
public userId: string;
public data: ChangeActivationData;
}

View file

@ -0,0 +1,11 @@
import {Credential} from "./Credential";
import {Account} from "../Account";
import {Roles} from "./Roles";
import {Person} from "../Person";
export class CreateAccountData {
public credential: Credential;
public account: Account;
public person: Person;
public roles: Roles;
}

View file

@ -0,0 +1,7 @@
import {CreateAccountData} from "./CreateAccountData";
export class CreateAccountRequest {
public processKey: string;
public userId: string;
public data: CreateAccountData;
}

View file

@ -0,0 +1,3 @@
export class Credential {
public userName: string = "";
}

View file

@ -0,0 +1,6 @@
import {Role} from "../Role";
export class Roles {
public rolesList: Role[] = [];
public removeRoles: string[] = [];
}

View file

@ -0,0 +1,5 @@
import {Account} from "../Account";
export class EditAccountData {
public account: Account;
}

View file

@ -0,0 +1,7 @@
import {EditAccountData} from "./EditAccountData";
export class EditAccountRequest {
public processKey: string;
public userId: string;
public data: EditAccountData;
}

View file

@ -0,0 +1,6 @@
import {Person} from "../Person";
export class EditPersonData {
public accountId: string;
public personData: Person;
}

View file

@ -0,0 +1,7 @@
import {EditPersonData} from "./EditPersonData";
export class EditPersonRequest {
public processKey: string;
public userId: string;
public data: EditPersonData;
}

View file

@ -0,0 +1,7 @@
import {Role} from "../Role";
export class EditRolesAccount {
public accountId: string;
public rolesList: Role[] = [];
public removeRoles: string[] = [];
}

View file

@ -0,0 +1,5 @@
import {EditRolesAccount} from "./EditRolesAccount";
export class EditRolesData {
public account: EditRolesAccount;
}

View file

@ -0,0 +1,7 @@
import {EditRolesData} from "./EditRolesData";
export class EditRolesRequest {
public processKey: string;
public userId: string;
public data: EditRolesData;
}

View file

@ -0,0 +1,3 @@
export class ResetPasswordAccount {
public id: string;
}

View file

@ -0,0 +1,5 @@
import {ResetPasswordAccount} from "./ResetPasswordAccount";
export class ResetPasswordData {
public account: ResetPasswordAccount;
}

View file

@ -0,0 +1,7 @@
import {ResetPasswordData} from "./ResetPasswordData";
export class ResetPasswordRequest {
public processKey: string;
public userId: string;
public data: ResetPasswordData;
}

View file

@ -1,98 +0,0 @@
export class ProcessRequest {
public static CREATE = {
processKey: "",
userId: "",
data: {
credential: {
userName: ""
},
account: {
schema: "Account",
"user-domain": "",
position: "",
enabled: true,
esiaAccount: false,
start: "",
finish: ""
},
person: {
id: "",
surname: "",
firstname: "",
middlename: "",
email: "",
birthdate: "",
snils: "",
ipAddresses: [],
secondFactorEnabled: false,
sex: ""
},
roles: {
rolesList: [],
removeRoles: []
}
}
};
public static EDIT_PERSON = {
processKey: "",
userId: "",
data: {
accountId: "",
personData: {
id: "",
surname: "",
firstname: "",
middlename: "",
email: "",
birthdate: "",
snils: "",
ipAddresses: [],
secondFactorEnabled: false,
sex: ""
}
}
};
public static EDIT_ACCOUNT = {
processKey: "",
userId: "",
data: {
account: {
id: "",
schema: "Account",
"user-domain": "",
position: "",
enabled: true,
esiaAccount: false,
start: "",
finish: ""
}
}
};
public static EDIT_ROLES = {
processKey: "",
userId: "",
data: {
account: {
accountId: "",
rolesList: [],
removeRoles: []
}
}
};
public static CHANGE_ACTIVATION = {
processKey: "",
userId: "",
data: {
accountIdList: []
}
};
public static RESET_PASSWORD = {
processKey: "",
userId: "",
data: {
account: {
id: ""
}
}
};
}