Giter VIP home page Giter VIP logo

ivanilsodasilva / sistema-bancario-backend Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 1.0 525 KB

Bem-vindo ao repositório sistema-bancario-backend, um projeto desenvolvido durante minha faculdade visando proporcionar a mim e outros colegas uma experiência prática e educacional no uso de spring e outros recursos.

Home Page: https://ivanilso-api.g8online.com.br

Java 100.00%
git github java markdown mvc slq spring xml uml maven

sistema-bancario-backend's Introduction

──────▄▀▄─────▄▀▄
─────▄█░░▀▀▀▀▀░░█▄
─▄▄──█░░░░░░░░░░░█──▄▄
█▄▄█─█░░▀░░┬░░▀░░█─█▄▄█

1.1. INTRODUCTION 📰

Bem-vindo ao repositório sistema-bancario-backend, um projeto desenvolvido durante minha faculdade visando proporcionar a mim e outros colegas uma experiência prática e educacional no uso de spring e outros recursos.

1.2. DESCRIPTION 📝

Este repositorio mantem o backend do sistema que funciona junto a um frontend separado. Essa parte se trata do backend e foi utilizada pelas materias de Projeto Orientado a Objetos e Administração de Banco de Dados com meu grupo @Micael e @Caike.

1.2.1. PADRÃO DE DESIGNER DE ARQUITETURA

O Spring Boot utiliza o padrão MVC (Model-View-Controller) para separar a lógica de negócios, a apresentação e o controle de fluxo em diferentes componentes. Isso ajuda a manter o código organizado e torna mais fácil para os desenvolvedores trabalharem em diferentes partes do aplicativo. O modelo é responsável pela representação dos dados do aplicativo, a visão é responsável pela interface do usuário e o controlador é responsável por gerenciar as interações entre o modelo e a visão.

1.2.2. PADRÃO DE PROJETO

O padrão Singleton é usado para garantir que apenas uma instância de uma classe seja criada durante a execução do aplicativo. O Spring Boot usa o padrão Singleton em muitos de seus componentes principais, como o contêiner IoC e o gerenciador de sessão. Isso ajuda a economizar recursos e garantir que os componentes principais do aplicativo estejam sempre disponíveis.

O padrão Strategy é usado para definir um conjunto de algoritmos que podem ser intercambiáveis. No Spring Boot, o padrão Strategy é usado em muitos componentes, como serviços de autenticação e autorização. Os desenvolvedores podem escolher a estratégia apropriada para seu aplicativo, e o Spring Boot permite que eles mudem de estratégia sem afetar outros componentes.

O padrão Builder é usado para criar objetos complexos passo a passo. No Spring Boot, o padrão Builder é usado em muitos componentes, como os objetos de configuração. Os desenvolvedores podem criar objetos de configuração de forma programática, passo a passo, em vez de ter que lidar com XML ou JSON. Isso torna mais fácil criar objetos de configuração precisos e personalizados para cada aplicativo.

O padrão Template Method é usado para definir o esqueleto de um algoritmo em uma classe base, deixando os detalhes da implementação para subclasses. O Spring Boot usa o padrão Template Method em muitos de seus componentes, como os serviços de validação. Os desenvolvedores podem definir uma classe base que implementa a lógica geral de validação, mas deixar as validações específicas para as subclasses. Isso torna mais fácil reutilizar código e implementar novas funcionalidades sem precisar refatorar todo o código.

O padrão Chain of Responsibility é usado para criar uma cadeia de objetos, onde cada objeto é responsável por processar uma solicitação específica. O Spring Boot usa o padrão Chain of Responsibility em muitos componentes, como filtros HTTP e interceptadores. Isso permite que os desenvolvedores adicionem facilmente novas funcionalidades ao aplicativo, sem precisar modificar o código existente.

O padrão Observer é usado para notificar um conjunto de objetos quando um evento ocorre. No Spring Boot, o padrão Observer é usado em muitos componentes, como serviços de mensageria. Isso permite que os desenvolvedores definam um conjunto de observadores que serão notificados quando uma mensagem for recebida, por exemplo. Isso torna mais fácil para os desenvolvedores criar aplicativos escaláveis e resilientes.

É muito comum encontrarmos forte acoplamento entre componentes ou classes dentro de uma solução. Este termo se refere a situações onde um objeto depende de outro bem específico para existir. O forte acoplamento em softwares faz com que a manutenção se torne bastante complicada, pois geralmente a alteração de um elemento gera a necessidade de alteração em outros, devido a dependência entre eles.

Inversão de Controle é implementada utilizando um outro princípio chamado Injeção de Dependência. Basicamente, a Inversão de Controle é uma forma diferente que temos para manipular o controle sobre um objeto. Já a injeção de dependência é um padrão de desenvolvimento de programas de computadores utilizado quando é necessário manter baixo o nível de acoplamento entre diferentes módulos de um sistema.

1.2.3. SOLID

1.3. TECHNOLOGIES 💻

Git  GitHub  MySQL 

Java  Markdown 

Spring 

IntelliJ IDEA 

Hibernate  Apache Maven 

1.4. HOW TO USE 💡

Use the following commands (if there are commands) by CTRL+V where necessary

📌 IMPORT CODE THROUGH MAVEN INTO YOUR IDE

1.5. END-POINTS 🚪

📌Criar uma conta individual : /account/individual-person/create
Cria uma conta de pessoa fisica

Body de request

{
  "name" : Nome da pessoa (Em conta de pessoa fisica)/String,
  "cpf" : CPF da pessoa (Em conta de pessoa fisica)/String,
  "rg" : RG da pessoa (Em conta de pessoa fisica)/String,
  "birth" : Data de nascimento da pessoa (Em conta de pessoa fisica)/String,
  "accountType" : Tipo da conta/Enum(CORRENTE, POUPANCA, PAGAMENTOS, UNIVERSITARIA),
  "password" : Senha da conta/String,
  "agencyCode": Numero da agencia da conta/String,
}

Body de Response

{
  "id" : ID da conta/String,
  "name" : Nome da pessoa (Em conta de pessoa fisica)/String,
  "cpf" : CPF da pessoa (Em conta de pessoa fisica)/String,
  "rg" : RG da pessoa (Em conta de pessoa fisica)/String,
  "birth" : Data de nascimento da pessoa (Em conta de pessoa fisica)/String,
  "companyName" : Razão social da empresa (Em conta de pessoa juridica)/String,
  "cnpj" : "CNPJ da empresa (Em conta de pessoa juridica)/String,
  "agencyCode" : Numero da agencia da conta/String,
  "number" :Numero da conta/String,
  "balance" : Saldo da conta/Double,
  "locked" : Bloqueio da conta/Boolean,
  "legalPersonId" : ID da pessoa jurdica(Em conta de pessoa juridica)/String,
  "individualPersonId" : ID da pessoa fisica(Em conta de pessoa fisica)/String,
}

📌Criar uma conta juridica : /account/legal-person/create
Cria uma conta de pessoa juridica

Body de request

{
  "razaoSocial" : Nome da pessoa (Em conta de pessoa fisica)/String,
  "cnpj" : CPF da pessoa (Em conta de pessoa fisica)/String,
  "accountType" : Tipo da conta/Enum(CORRENTE, POUPANCA, PAGAMENTOS, UNIVERSITARIA),
  "password" : Senha da conta/String,
  "agencyCode" : Numero da agencia da conta/String,
}

Body de Response

{
  "id" : ID da conta/String,
  "name" : Nome da pessoa (Em conta de pessoa fisica)/String,
  "cpf" : CPF da pessoa (Em conta de pessoa fisica)/String,
  "rg" : RG da pessoa (Em conta de pessoa fisica)/String,
  "birth" : Data de nascimento da pessoa (Em conta de pessoa fisica)/String,
  "companyName" : Razão social da empresa (Em conta de pessoa juridica)/String,
  "cnpj" : "CNPJ da empresa (Em conta de pessoa juridica)/String,
  "agencyCode" : Numero da agencia da conta/String,
  "number" :Numero da conta/String,
  "balance" : Saldo da conta/Double,
  "locked" : Bloqueio da conta/Boolean,
  "legalPersonId" : ID da pessoa jurdica(Em conta de pessoa juridica)/String,
  "individualPersonId" : ID da pessoa fisica(Em conta de pessoa fisica)/String,
}

📌Login : /account/login
Retorna uma conta já criada

Body de request

{
  "number" : Numero da conta/String,
  "password" : Senha da conta/String,
}

Body de Response

{
  "id" : ID da conta/String,
  "name" : Nome da pessoa (Em conta de pessoa fisica)/String,
  "cpf" : CPF da pessoa (Em conta de pessoa fisica)/String,
  "rg" : RG da pessoa (Em conta de pessoa fisica)/String,
  "birth" : Data de nascimento da pessoa (Em conta de pessoa fisica)/String,
  "companyName" : Razão social da empresa (Em conta de pessoa juridica)/String,
  "cnpj" : "CNPJ da empresa (Em conta de pessoa juridica)/String,
  "agencyCode" : Numero da agencia da conta/String,
  "number" :Numero da conta/String,
  "balance" : Saldo da conta/Double,
  "locked" : Bloqueio da conta/Boolean,
  "legalPersonId" : ID da pessoa jurdica(Em conta de pessoa juridica)/String,
  "individualPersonId" : ID da pessoa fisica(Em conta de pessoa fisica)/String,
}

📌Deposito : /account/deposit
Realiza um deposito na conta

Body de request

{
  "id" : ID da conta/String,
  "balance" : Saldo da operacao/Double,
}

Body de Response

{
  null
}

📌Saque : /account/withdraw
Realiza um saque na conta

Body de request

{
  "id" : ID da conta/String,
  "balance" : Saldo da operacao/Double,
}

Body de Response

{
  null
}

📌Transferencia : /account/transfer (Em desenvolvimento) Realiza uma transferencia na conta

Body de request

{
  "id" : ID da conta/String,
  "number" : Numero da conta que vai receber a transferencia/String,
  "balance" : Saldo da operacao/Double,
}

Body de Response

{
  null
}

1.6. OTHER REPOSITORIES 📘

More...

1.7. FONTS 📚

www.medium.com www.dio.me www.devmedia.com.br

sistema-bancario-backend's People

Contributors

ivanilsodasilva avatar

Stargazers

 avatar

Watchers

 avatar

sistema-bancario-backend's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.