Esse projeto é o desafio final de programação do bootcamp da Wipro ministrado pelos professores Jenifer Plácido , Jonathan Ferreira e Ana Verônica da Gama Academy.
Douglas da Silva |
Ícaro Leone |
Murilo Fernandes Saidel |
Sebastião Alexsandro |
Rafael Roco |
Lucas V. |
---|
Sprint 1️⃣ Status: Concluído ✅
Sprint 2️⃣ Status: Concluído ✅
Sprint 3️⃣ Status: Concluído ✅
API para web access da aplicação que faz o gerenciamento de conta bancária e que permite as seguintes operações:
- Criação de gerente, cliente, conta bancária(corrente ou especial) e cartão de crédito ➕
- Consulta de todos os dados de gerente e cliente 🔍
- Remoção das contas báncarias ➖
- Exclusão dos clientes ❌
- Depósitos das contas báncarias 💰🟢
- Saques das contas báncarias 💰🔴
- Transferências entre contas 🔃
- Atualização do cartão de crédito 💳
- Histórico de movimentação entre as contas 🏃
O nosso projeto foi desenvolvido através de uma construção coletiva utilizando a metodologia ágil SCRUM, onde foi definido todo o escopo no backlog, mapeando todas as atividades necesárias para a conclusão da nossa aplicação. Segue abaixo um exemplo da nossa primeira história desenvolvida:
Utilizamos a plataforma Trello para construir o nosso quadro Kaban e acompanhar a evolução do nosso projeto, onde foram divididas as tarefas pelo grupo estruturando as Sprint's em cards e definindo as colunas em "fazer", "fazendo", "feito", "testando" e "testado".
A Estrutura para a construção das classes JAVA foi baseado no padrão MVC(modelagem, visualização e controle) para obter uma melhor organização visual e prática do nosso projeto.
O diagrama Entidade Relacionamento é composto por um conjunto de objetos gráficos que visa representar todos os objetos do modelo Entidade-Relacionamento tais como entidades, atributos, atributos chaves, relacionamentos, restrições estruturais, etc. O diagrama ER fornece uma visão lógica do banco de dados, fornecendo um conceito mais generalizado de como estão estruturados os dados de um sistema.
Tech or Frame | OpenJDK ☕ | Eclipse IDE🌑 | Spring Tools 🍃 | Spring Security 🔒 | Swagger 📄 | Postman 👨🏿🚀 | MySQL 🐬 |
Version | 11 64-bit | 2022-23 | 4(Spring Boot) | 5.0.0 | 3.0.0 | 9.15.2 64-bit | 8.0.28.0 |
- Baixar ou clonar o projeto do Github.
- Instalar o Java JDK (Versão 11 ou superior).
- Instalar uma IDE que execute o JAVA da sua escolha.
- Execute o Eclipse ou alguma IDE Java.
- Importe o projeto para dentro da sua IDE como projeto Maven.
- Instalar um banco de dados MySQL da sua preferência.
- Configure o arquivo application.properties escolhendo a Porta, banco de dados, usuário e senha.
- Execute a aplicação utilizando o Spring Boot App.
- Instalar o Postman ou alguma plataforma de API da sua escolha.
- Execute a plataforma de API e insira os EndPoints presentes no arquivo REQUEST.JSON do projeto.
- Execute as requisições.
Os endpoints para teste e acesso ao seus métodos HTTPs (GET, POST, PUT e DELETE) do JarvisApp são:
http://localhost:8081/managers
{
"name": "Wipro da Silva",
"cpf": "56895175008",
"email": "[email protected]",
"password": "123456"
“registration”: d4123
}
http://localhost:8081/managers/checkingAccount/{registration}
{
"balance": 2000,
"customer": {
"name": "Fabricio Nogueira",
"cpf": "10989967042",
"email": "[email protected]",
"password": "123456"
}
}
http://localhost:8081/managers/specialAccount/{registration}
{
"balance": 2000,
"specialLimit": 500.0,
"customer": {
"name": "Fabricio Nogueira",
"cpf": "10989967042",
"email": "[email protected]",
"password": "123456"
}
}
http://localhost:8081/managers/validationPassword?email=(email do manager)&password(senha do manager)
http://localhost:8081/managers/accountAll/{registration}
http://localhost:8081/managers/checkingAccount/{registration}
http://localhost:8081/managers/specialAccount/{registration}
http://localhost:8081/managers/checkingAccount/{registration}/{accountNumber}
http://localhost:8081/managers/specialAccount/{registration}/{accountNumber}
http://localhost:8081/managers/customer/{registration}
{
"id": 1,
"name": "Fabrício Nogueira Paixão“,
"cpf": "50782857094",
"email": "[email protected]",
"password": "123456"
}
- Dados do cliente atualizado
http://localhost:8081/managers/activateCard/{registration}/{accountNumber}
{
"creditLimit":"400",
"cardLevel": 1
}
http://localhost:8081/managers/updateCard/{registration}/{accountNumber}
{
"creditLimit":"900",
"cardLevel": 2
}
http://localhost:8081/managers/checkingAccount/{registration}/{accountNumber}
http://localhost:8081/managers/specialAccount/{registration}/{accountNumber}
http://localhost:8081/customers/{accountNumber}
http://localhost:8081/customers/movimenties/{accountNumber}
http://localhost:8081/customers/deposit/{accountNumber}?value=(valor a ser depositado)
http://localhost:8081/customers/withdraw/{accountNumber}?value=(valor a ser sacar)
http://localhost:8081/customers/transfer/{accountNumberOrigin}/{accountNumberDestination}?value=(valor a ser transferido)
O tratamento de exceções da nossa aplicação é feita de diversas maneiras. O package de Exceptions apresenta as exceções das classes de Cliente, Conta, Cartão de crédito e Transações.
-- MySQL Script generated by MySQL Workbench -- Thu Apr 28 19:58:25 2022 -- Model: New Model Version: 1.0 -- MySQL Workbench Forward Engineering
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
-- Schema projetofinal
-- Schema projetofinal
CREATE SCHEMA IF NOT EXISTS projetofinal
DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci ;
USE projetofinal
;
-- Table projetofinal
.tb_checkingaccounts
CREATE TABLE IF NOT EXISTS projetofinal
.tb_checkingaccounts
(
id
VARCHAR(255) NOT NULL,
account_number
VARCHAR(255) NULL DEFAULT NULL,
balance
DOUBLE NULL DEFAULT NULL,
created_date
DATETIME NULL DEFAULT NULL,
credit_id
BIGINT(20) NOT NULL DEFAULT NULL,
customer_id
BIGINT(20) NOT NULL DEFAULT NULL,
status
TINYINT NULL,
PRIMARY KEY (id
, customer_id
, credit_id
),
INDEX FKtn1bgqm64bgycy4coanxnxgup
(credit_id
ASC) VISIBLE,
INDEX FKss63orq1gbugocnt7fd2dj6dq
(customer_id
ASC) VISIBLE,
CONSTRAINT FKss63orq1gbugocnt7fd2dj6dq
FOREIGN KEY (customer_id
)
REFERENCES projetofinal
.tb_customers
(id
),
CONSTRAINT FKtn1bgqm64bgycy4coanxnxgup
FOREIGN KEY (credit_id
)
REFERENCES projetofinal
.tb_creditcard
(id
))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- Table projetofinal
.tb_checkingaccounts_moviment
CREATE TABLE IF NOT EXISTS projetofinal
.tb_checkingaccounts_moviment
(
checking_account_id
VARCHAR(255) NOT NULL,
moviment_id
BIGINT(20) NOT NULL,
UNIQUE INDEX UK_4dekfh76lu5irr723c9hctq45
(moviment_id
ASC) VISIBLE,
INDEX FKisxidwe69fxc91rxh5xqndmkj
(checking_account_id
ASC) VISIBLE,
CONSTRAINT FKisxidwe69fxc91rxh5xqndmkj
FOREIGN KEY (checking_account_id
)
REFERENCES projetofinal
.tb_checkingaccounts
(id
),
CONSTRAINT FKki8r2h79fsms6r56wghr94a0m
FOREIGN KEY (moviment_id
)
REFERENCES projetofinal
.tb_movimenties
(id
))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- Table projetofinal
.tb_creditcard
CREATE TABLE IF NOT EXISTS projetofinal
.tb_creditcard
(
id
BIGINT(20) NOT NULL AUTO_INCREMENT,
ativo
BIT(1) NULL DEFAULT NULL,
card_level
INT(11) NULL DEFAULT NULL,
card_number
VARCHAR(255) NULL DEFAULT NULL,
credit_limit
DOUBLE NULL DEFAULT NULL,
cvv
VARCHAR(255) NULL DEFAULT NULL,
expiration_date
DATETIME NULL DEFAULT NULL,
flag
VARCHAR(255) NULL DEFAULT NULL,
PRIMARY KEY (id
))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- Table projetofinal
.tb_customers
CREATE TABLE IF NOT EXISTS projetofinal
.tb_customers
(
id
BIGINT(20) NOT NULL AUTO_INCREMENT,
cpf
VARCHAR(255) NOT NULL,
email
VARCHAR(255) NOT NULL,
name
VARCHAR(255) NULL DEFAULT NULL,
password_user
VARCHAR(200) NULL DEFAULT NULL,
PRIMARY KEY (id
))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- Table projetofinal
.tb_managers
CREATE TABLE IF NOT EXISTS projetofinal
.tb_managers
(
id
BIGINT(20) NOT NULL AUTO_INCREMENT,
cpf
VARCHAR(255) NOT NULL,
email
VARCHAR(255) NOT NULL,
name
VARCHAR(255) NULL DEFAULT NULL,
password_user
VARCHAR(200) NULL DEFAULT NULL,
registration
VARCHAR(255) NOT NULL,
PRIMARY KEY (id
),
UNIQUE INDEX UK_o0l5tq87ofw4tt814qa8c9y95
(registration
ASC) VISIBLE)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- Table projetofinal
.tb_movimenties
CREATE TABLE IF NOT EXISTS projetofinal
.tb_movimenties
(
id
BIGINT(20) NOT NULL AUTO_INCREMENT,
account_destination
VARCHAR(255) NULL DEFAULT NULL,
account_origin
VARCHAR(255) NULL DEFAULT NULL,
moviment_date
DATETIME NULL DEFAULT NULL,
moviment_description
INT(11) NULL DEFAULT NULL,
value
DOUBLE NULL DEFAULT NULL,
PRIMARY KEY (id
))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- Table projetofinal
.tb_specialaccounts
CREATE TABLE IF NOT EXISTS projetofinal
.tb_specialaccounts
(
id
VARCHAR(255) NOT NULL,
account_number
VARCHAR(255) NULL DEFAULT NULL,
balance
DOUBLE NULL DEFAULT NULL,
created_date
DATETIME NULL DEFAULT NULL,
special_limit
DOUBLE NULL DEFAULT NULL,
credit_id
BIGINT(20) NOT NULL DEFAULT NULL,
customer_id
BIGINT(20) NOT NULL DEFAULT NULL,
status
TINYINT NULL,
PRIMARY KEY (id
, credit_id
, customer_id
),
INDEX FKk4knubwqef877vsqnx36mdlrd
(credit_id
ASC) VISIBLE,
INDEX FK27nxsvxeisumyvo67eemslmq
(customer_id
ASC) VISIBLE,
CONSTRAINT FK27nxsvxeisumyvo67eemslmq
FOREIGN KEY (customer_id
)
REFERENCES projetofinal
.tb_customers
(id
),
CONSTRAINT FKk4knubwqef877vsqnx36mdlrd
FOREIGN KEY (credit_id
)
REFERENCES projetofinal
.tb_creditcard
(id
))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
-- Table projetofinal
.tb_specialaccounts_moviment
CREATE TABLE IF NOT EXISTS projetofinal
.tb_specialaccounts_moviment
(
special_account_id
VARCHAR(255) NOT NULL,
moviment_id
BIGINT(20) NOT NULL,
UNIQUE INDEX UK_dir8k5j1pvpc73du8sd8iyle5
(moviment_id
ASC) VISIBLE,
INDEX FKys4fugxrvvbidoi6ms4nn3r8
(special_account_id
ASC) VISIBLE,
CONSTRAINT FKln8c9org8j1f54j5n1wq42pch
FOREIGN KEY (moviment_id
)
REFERENCES projetofinal
.tb_movimenties
(id
),
CONSTRAINT FKys4fugxrvvbidoi6ms4nn3r8
FOREIGN KEY (special_account_id
)
REFERENCES projetofinal
.tb_specialaccounts
(id
))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci;
SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
Gostariamos de agradecer a Wipro, a Gama Academy e aos professores que ministraram o bootcamp pela oportunidade de aprendizado e pelo conhecimento que todo o grupo adquiriu durante essas 5 semanas. Grupo JARVIS 💚