瀏覽代碼

new: several new routes (CRUD) and att on the routes.md file

EduLascala 1 月之前
父節點
當前提交
6fda2793ea
共有 29 個文件被更改,包括 770 次插入281 次删除
  1. 104 77
      routes.md
  2. 0 2
      src/main/java/com/platform2easy/genesis/domain/model/Commoditiy.java
  3. 35 0
      src/main/java/com/platform2easy/genesis/domain/model/Company.java
  4. 0 25
      src/main/java/com/platform2easy/genesis/domain/model/Compra.java
  5. 0 25
      src/main/java/com/platform2easy/genesis/domain/model/ItemCompra.java
  6. 0 24
      src/main/java/com/platform2easy/genesis/domain/model/ItemVenda.java
  7. 53 0
      src/main/java/com/platform2easy/genesis/domain/model/Token.java
  8. 47 0
      src/main/java/com/platform2easy/genesis/domain/model/TxCoin.java
  9. 44 0
      src/main/java/com/platform2easy/genesis/domain/model/TxToken.java
  10. 0 24
      src/main/java/com/platform2easy/genesis/domain/model/Venda.java
  11. 44 0
      src/main/java/com/platform2easy/genesis/domain/model/Wallet.java
  12. 7 0
      src/main/java/com/platform2easy/genesis/domain/repository/CompanyRepository.java
  13. 0 8
      src/main/java/com/platform2easy/genesis/domain/repository/ItemCompraRepository.java
  14. 7 0
      src/main/java/com/platform2easy/genesis/domain/repository/TokenRepository.java
  15. 7 0
      src/main/java/com/platform2easy/genesis/domain/repository/TxCoinRepository.java
  16. 7 0
      src/main/java/com/platform2easy/genesis/domain/repository/TxTokenRepository.java
  17. 2 3
      src/main/java/com/platform2easy/genesis/domain/repository/WalletRepository.java
  18. 34 0
      src/main/java/com/platform2easy/genesis/domain/service/CompanyService.java
  19. 0 38
      src/main/java/com/platform2easy/genesis/domain/service/CompraService.java
  20. 34 0
      src/main/java/com/platform2easy/genesis/domain/service/TokenService.java
  21. 34 0
      src/main/java/com/platform2easy/genesis/domain/service/TxCoinService.java
  22. 34 0
      src/main/java/com/platform2easy/genesis/domain/service/TxTokenService.java
  23. 34 0
      src/main/java/com/platform2easy/genesis/domain/service/WalletService.java
  24. 49 0
      src/main/java/com/platform2easy/genesis/web/controller/CompanyController.java
  25. 0 55
      src/main/java/com/platform2easy/genesis/web/controller/CompraController.java
  26. 49 0
      src/main/java/com/platform2easy/genesis/web/controller/TokenController.java
  27. 48 0
      src/main/java/com/platform2easy/genesis/web/controller/TxCoinController.java
  28. 48 0
      src/main/java/com/platform2easy/genesis/web/controller/TxTokenController.java
  29. 49 0
      src/main/java/com/platform2easy/genesis/web/controller/WalletController.java

+ 104 - 77
routes.md

@@ -7,6 +7,7 @@ cd /home/uriri/Projetos/tooeasy/backend/too-easy-genesis
 ```bash
 ./mvnw -DskipTests spring-boot:run
 ```
+
 ```bash
 java -jar target/too-easy-trader-genesis-0.0.1-SNAPSHOT.jar --server.port=8080
 ```
@@ -25,6 +26,8 @@ Default headers for protected routes:
 - Authorization: Bearer {{token}}
 - Content-Type: application/json
 
+# IMPORTANTE: JWT ATUALMENTE ESTÁ SEM LIMITE DE TEMPO POR QUESTÃO DE TESTES!
+
 ## Register
 
 #### Create a Default user with:
@@ -131,136 +134,160 @@ Notes:
 Notes:
 - Protected by JWT (Authorization: Bearer {{token}}).
 
+## Company API (`com.platform2easy.genesis.web.controller.CompanyController`)
+#### Base path: {{baseUrl}}/api/company
 
-## Compra API (`com.platform2easy.genesis.web.controller.CompraController`)
-#### Base path: {{baseUrl}}/api/compra
-
-#### - GET {{baseUrl}}/api/compra
+- GET {{baseUrl}}/api/company
+  - List all companies.
 
-#### - GET {{baseUrl}}/api/compra/{id}
+- GET {{baseUrl}}/api/company/{id}
   - Path params: id (Long)
 
-#### - POST {{baseUrl}}/api/compra
-  - Body — entity `Compra` with nested `ItemCompra` list:
+- POST {{baseUrl}}/api/company
+  - Body — entity `Company` (`domain/model/Company.java`):
 ```json
 {
-  "fornecedor": "Fornecedor XYZ",
-  "itens": [
-    { "quantidade": 10, "valor": 35.5, "descricao": "Item A" },
-    { "quantidade": 5, "valor": 100.0, "descricao": "Item B" }
-  ]
+  "name": "Minha Empresa",
+  "flag": "ACTIVE"
 }
 ```
 
-#### - PUT {{baseUrl}}/api/compra/{id}
+- PUT {{baseUrl}}/api/company/{id}
   - Body: same as POST
 
-#### - DELETE {{baseUrl}}/api/compra/{id}
+- DELETE {{baseUrl}}/api/company/{id}
 
 Notes:
-- `Compra` and `ItemCompra` live in `domain/model/Compra.java` and `domain/model/ItemCompra.java`.
-- IDs are generated; omit `id` in POST bodies.
-
+- Protected by JWT (Authorization: Bearer {{token}}).
+- Fields: `name` (String), `flag` (String).
 
-## CPR - Emissão (`com.platform2easy.genesis.web.controller.cerc.EmissaoCprController`)
-#### Base path: {{baseUrl}}/api/cpr/emission
+## Wallet API (`com.platform2easy.genesis.web.controller.WalletController`)
+#### Base path: {{baseUrl}}/api/wallet
 
-#### - GET {{baseUrl}}/api/cpr/emission
+- GET {{baseUrl}}/api/wallet
+  - List all wallets.
 
-#### - GET {{baseUrl}}/api/cpr/emission/{id}
+- GET {{baseUrl}}/api/wallet/{id}
+  - Path params: id (Long)
 
-#### - POST {{baseUrl}}/api/cpr/emission
-  - Body — entity `EmissaoCpr`:
+- POST {{baseUrl}}/api/wallet
+  - Body — entity `Wallet` (`domain/model/Wallet.java`):
 ```json
 {
-  "dataEntrega": "2025-11-01",
-  "localEmissao": "São Paulo",
-  "razaoSocialEmissor": "Empresa Emissora SA",
-  "tipoCpr": "FISICO"
+  "companyId": 1,
+  "publicKey": "WALLET_PUBLIC_KEY",
+  "privateKey": "WALLET_PRIVATE_KEY",
+  "flag": "ACTIVE",
+  "chainId": 1
 }
 ```
 
-#### - PUT {{baseUrl}}/api/cpr/emission/{id}
+- PUT {{baseUrl}}/api/wallet/{id}
   - Body: same as POST
 
-#### - DELETE {{baseUrl}}/api/cpr/emission/{id}
+- DELETE {{baseUrl}}/api/wallet/{id}
 
 Notes:
-- `tipoCpr` enum values: `FISICO`, `FINANCEIRO` (`domain/model/cerc/TipoCpr.java`).
-- `dataEntrega` is ISO LocalDate.
-
+- Protected by JWT (Authorization: Bearer {{token}}).
+- Fields: `companyId` (Long), `publicKey` (String), `privateKey` (String), `flag` (String), `chainId` (Long).
 
-## CPR - Contrato de Valor (`com.platform2easy.genesis.web.controller.cerc.ContratoValorCprController`)
-Base path: {{baseUrl}}/api/cpr/contract
+## Token API (`com.platform2easy.genesis.web.controller.TokenController`)
+#### Base path: {{baseUrl}}/api/token
 
-#### - GET {{baseUrl}}/api/cpr/contract
+- GET {{baseUrl}}/api/token
+  - List all tokens.
 
-#### - GET {{baseUrl}}/api/cpr/contract/{id}
+- GET {{baseUrl}}/api/token/{id}
+  - Path params: id (Long)
 
-#### - POST {{baseUrl}}/api/cpr/contract
-  - Body — entity `ContratoValorCpr` (all fields optional except as required by business rules):
+- POST {{baseUrl}}/api/token
+  - Body — entity `Token` (`domain/model/Token.java`):
 ```json
 {
-  "autorizoRegistroEDeclaroQueFoiDadoBaixaNoRegistroEmQuaisquerOutrasIf": true,
-  "codigoContratoOperacaoCredito": "OP123",
-  "codigoContratoScr": "SCR-456",
-  "codigoMoeda": "BRL",
-  "dataBaixaOutraIf": "2025-10-01T10:00:00",
-  "dataContratoSistemaIF": "2025-09-15T09:30:00",
-  "dataRegistroOriginal": "2025-09-01T08:00:00",
-  "dataTransacao": "2025-10-02",
-  "identificacaoPadronizadaOperacaoCredito": "ID-789",
-  "indexacao": "CDI",
-  "naturezaOperacao": "CREDITO_RURAL",
-  "percentualIndexador": 0.12,
-  "quantidadeParcelaContratada": 12,
-  "referenciaExterna": "REF-2025",
-  "taxaJurosOperacao": 0.15,
-  "tipoAtivo": "CPR",
-  "valorFinanciadoContrato": 100000.00,
-  "valorLiquidoCredito": 95000.00,
-  "valorTotalCredito": 110000.00
+  "externalId": "1",
+  "commoditiesAmount": 100,
+  "flag": "ACTIVE",
+  "commoditiesValue": 5000,
+  "walletId": 1,
+  "chainId": 1,
+  "commoditiesId": 1,
+  "cprId": 1
 }
 ```
 
-#### - PUT {{baseUrl}}/api/cpr/contract/{id}
+- PUT {{baseUrl}}/api/token/{id}
   - Body: same as POST
 
-#### - DELETE {{baseUrl}}/api/cpr/contract/{id}
+- DELETE {{baseUrl}}/api/token/{id}
 
 Notes:
-- Date/time fields use ISO-8601: LocalDate `yyyy-MM-dd`, LocalDateTime `yyyy-MM-dd'T'HH:mm:ss`.
-
+- Protected by JWT (Authorization: Bearer {{token}}).
+- Fields: `externalId` (String), `commoditiesAmount` (Integer), `flag` (String), `commoditiesValue` (Integer), `walletId` (Long), `chainId` (Long), `commoditiesId` (Long), `cprId` (Long).
 
-## CPR - Solicitação de Registro (`com.platform2easy.genesis.web.controller.cerc.SolicitacaoRegistroCprController`)
-Base path: {{baseUrl}}/api/cpr/register
+## TxCoin API (`com.platform2easy.genesis.web.controller.TxCoinController`)
+#### Base path: {{baseUrl}}/api/tx_coin
 
-#### - GET {{baseUrl}}/api/cpr/register
+- GET {{baseUrl}}/api/tx_coin
+  - List all tx_coin entries.
 
-#### - GET {{baseUrl}}/api/cpr/register/{id}
+- GET {{baseUrl}}/api/tx_coin/{id}
+  - Path params: id (String)
 
-#### - POST {{baseUrl}}/api/cpr/register
-  - Body — entity `SolicitacaoRegistroCpr` (references other entities by id):
+- POST {{baseUrl}}/api/tx_coin
+  - Body — entity `TxCoin` (`domain/model/TxCoin.java`):
 ```json
 {
-  "aditivo": "Aditivo 1",
-  "contratoValorCpr": { "id": 1 },
-  "emissaoCpr": { "id": 1 },
-  "status": "NOVO"
+  "id": "1",
+  "value": "1000.00",
+  "flag": "ACTIVE",
+  "ts": 1696200000,
+  "fromAddress": "",
+  "toAddress": "",
+  "currencyId": 1,
+  "chainId": 1
 }
 ```
 
-#### - PUT {{baseUrl}}/api/cpr/register/{id}
+- PUT {{baseUrl}}/api/tx_coin/{id}
   - Body: same as POST
 
-#### - POST {{baseUrl}}/api/cpr/register/{id}/send
-  - Effect: loads record by id and sets `status` to `ACEITO`.
-
-#### - DELETE {{baseUrl}}/api/cpr/register/{id}
+- DELETE {{baseUrl}}/api/tx_coin/{id}
 
 Notes:
-- `status` enum values: `NOVO`, `ACEITO`, `LIQUIDADO`, `RECUSADO`, `CANCELADO`.
+- Protected by JWT (Authorization: Bearer {{token}}).
+- Fields: `id` (String), `value` (String), `flag` (String), `ts` (Integer), `fromAddress` (String), `toAddress` (String), `currencyId` (Long), `chainId` (Long).
+
+## TxToken API (`com.platform2easy.genesis.web.controller.TxTokenController`)
+#### Base path: {{baseUrl}}/api/tx_token
+
+- GET {{baseUrl}}/api/tx_token
+  - List all tx_token entries.
+
+- GET {{baseUrl}}/api/tx_token/{id}
+  - Path params: id (String)
+
+- POST {{baseUrl}}/api/tx_token
+  - Body — entity `TxToken` (`domain/model/TxToken.java`):
+```json
+{
+  "id": "0xTXTOKEN123",
+  "flag": "ACTIVE",
+  "ts": 1696200000,
+  "fromAddress": "0xFROM",
+  "toAddress": "0xTO",
+  "tokenId": 1,
+  "chainId": 1
+}
+```
 
+- PUT {{baseUrl}}/api/tx_token/{id}
+  - Body: same as POST
+
+- DELETE {{baseUrl}}/api/tx_token/{id}
+
+Notes:
+- Protected by JWT (Authorization: Bearer {{token}}).
+- Fields: `id` (String), `flag` (String), `ts` (Integer), `fromAddress` (String), `toAddress` (String), `tokenId` (Long), `chainId` (Long).
 
 ## Quick Postman steps
 1. Choose a login:

+ 0 - 2
src/main/java/com/platform2easy/genesis/domain/model/Commoditiy.java

@@ -33,6 +33,4 @@ public class Commoditiy {
     @Column(name = "commodities_flag", nullable = false)
     private String flag;
 
-
-
 }

+ 35 - 0
src/main/java/com/platform2easy/genesis/domain/model/Company.java

@@ -0,0 +1,35 @@
+package com.platform2easy.genesis.domain.model;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Entity
+@Table(name = "company")
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(onlyExplicitlyIncluded = true)
+public class Company {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @EqualsAndHashCode.Include
+    @Column(name = "company_id")
+    private Long id;
+
+    @Column(name = "company_name", nullable = false)
+    private String name;
+
+    @Column(name = "company_flag", nullable = false)
+    private String flag;
+}

+ 0 - 25
src/main/java/com/platform2easy/genesis/domain/model/Compra.java

@@ -1,25 +0,0 @@
-package com.platform2easy.genesis.domain.model;
-
-
-import jakarta.persistence.CascadeType;
-import jakarta.persistence.Entity;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.GenerationType;
-import jakarta.persistence.Id;
-import jakarta.persistence.OneToMany;
-import lombok.Data;
-
-import java.util.List;
-
-@Entity
-@Data
-public class Compra {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-    private String fornecedor;
-
-    @OneToMany(mappedBy = "compra", cascade = CascadeType.ALL, orphanRemoval = true)
-    private List<ItemCompra> itens;
-}

+ 0 - 25
src/main/java/com/platform2easy/genesis/domain/model/ItemCompra.java

@@ -1,25 +0,0 @@
-package com.platform2easy.genesis.domain.model;
-
-import jakarta.persistence.Entity;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.GenerationType;
-import jakarta.persistence.Id;
-import jakarta.persistence.ManyToOne;
-import lombok.Data;
-
-@Entity
-@Data
-public class ItemCompra {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-
-    @ManyToOne
-    private Compra compra;
-
-    private Integer quantidade;
-    private Float valor;
-    private String descricao;
-
-}

+ 0 - 24
src/main/java/com/platform2easy/genesis/domain/model/ItemVenda.java

@@ -1,24 +0,0 @@
-package com.platform2easy.genesis.domain.model;
-
-import jakarta.persistence.Entity;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.GenerationType;
-import jakarta.persistence.Id;
-import jakarta.persistence.ManyToOne;
-import lombok.Data;
-
-@Entity
-@Data
-public class ItemVenda {
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-
-    @ManyToOne
-    private Venda venda;
-
-    private Integer quantidade;
-    private Float valor;
-    private String descricao;
-}

+ 53 - 0
src/main/java/com/platform2easy/genesis/domain/model/Token.java

@@ -0,0 +1,53 @@
+package com.platform2easy.genesis.domain.model;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Entity
+@Table(name = "token")
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(onlyExplicitlyIncluded = true)
+public class Token {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @EqualsAndHashCode.Include
+    @Column(name = "token_id")
+    private Long id;
+
+    @Column(name = "token_external_id", nullable = false)
+    private String externalId;
+
+    @Column(name = "token_commodities_amount", nullable = false)
+    private Integer commoditiesAmount;
+
+    @Column(name = "token_flag", nullable = false)
+    private String flag;
+
+    @Column(name = "token_commodities_value", nullable = false)
+    private Integer commoditiesValue;
+
+    @Column(name = "wallet_id", nullable = false)
+    private Long walletId;
+
+    @Column(name = "chain_id", nullable = false)
+    private Long chainId;
+
+    @Column(name = "commodities_id", nullable = false)
+    private Long commoditiesId;
+
+    @Column(name = "cpr_id", nullable = false)
+    private Long cprId;
+}

+ 47 - 0
src/main/java/com/platform2easy/genesis/domain/model/TxCoin.java

@@ -0,0 +1,47 @@
+package com.platform2easy.genesis.domain.model;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Entity
+@Table(name = "tx_coin")
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(onlyExplicitlyIncluded = true)
+public class TxCoin {
+
+    @Id
+    @EqualsAndHashCode.Include
+    @Column(name = "tx_coin_id")
+    private String id;
+
+    @Column(name = "tx_coin_value", nullable = false)
+    private String value;
+
+    @Column(name = "tx_coin_flag", nullable = false)
+    private String flag;
+
+    @Column(name = "tx_coin_ts", nullable = false)
+    private Integer ts;
+
+    @Column(name = "tx_coin_from_address", nullable = false)
+    private String fromAddress;
+
+    @Column(name = "tx_coin_to_address", nullable = false)
+    private String toAddress;
+
+    @Column(name = "currency_id", nullable = false)
+    private Long currencyId;
+
+    @Column(name = "chain_id", nullable = false)
+    private Long chainId;
+}

+ 44 - 0
src/main/java/com/platform2easy/genesis/domain/model/TxToken.java

@@ -0,0 +1,44 @@
+package com.platform2easy.genesis.domain.model;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Entity
+@Table(name = "tx_token")
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(onlyExplicitlyIncluded = true)
+public class TxToken {
+
+    @Id
+    @EqualsAndHashCode.Include
+    @Column(name = "tx_token_id")
+    private String id;
+
+    @Column(name = "tx_token_flag", nullable = false)
+    private String flag;
+
+    @Column(name = "tx_token_ts", nullable = false)
+    private Integer ts;
+
+    @Column(name = "tx_token_from_address", nullable = false)
+    private String fromAddress;
+
+    @Column(name = "tx_token_to_address", nullable = false)
+    private String toAddress;
+
+    @Column(name = "token_id", nullable = false)
+    private Long tokenId;
+
+    @Column(name = "chain_id", nullable = false)
+    private Long chainId;
+}

+ 0 - 24
src/main/java/com/platform2easy/genesis/domain/model/Venda.java

@@ -1,24 +0,0 @@
-package com.platform2easy.genesis.domain.model;
-
-import jakarta.persistence.CascadeType;
-import jakarta.persistence.Entity;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.GenerationType;
-import jakarta.persistence.Id;
-import jakarta.persistence.OneToMany;
-import lombok.Data;
-
-import java.util.List;
-
-@Entity
-@Data
-public class Venda {
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-    private String cliente;
-
-    @OneToMany(mappedBy = "venda", cascade = CascadeType.ALL, orphanRemoval = true)
-    private List<ItemVenda> itens;
-
-}

+ 44 - 0
src/main/java/com/platform2easy/genesis/domain/model/Wallet.java

@@ -0,0 +1,44 @@
+package com.platform2easy.genesis.domain.model;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Entity
+@Table(name = "wallet")
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(onlyExplicitlyIncluded = true)
+public class Wallet {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @EqualsAndHashCode.Include
+    @Column(name = "wallet_id")
+    private Long id;
+
+    @Column(name = "company_id", nullable = false)
+    private Long companyId;
+
+    @Column(name = "wallet_public_key", nullable = false)
+    private String publicKey;
+
+    @Column(name = "wallet_private_key", nullable = false)
+    private String privateKey;
+
+    @Column(name = "wallet_flag", nullable = false)
+    private String flag;
+
+    @Column(name = "chain_id", nullable = false)
+    private Long chainId;
+}

+ 7 - 0
src/main/java/com/platform2easy/genesis/domain/repository/CompanyRepository.java

@@ -0,0 +1,7 @@
+package com.platform2easy.genesis.domain.repository;
+
+import com.platform2easy.genesis.domain.model.Company;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface CompanyRepository extends JpaRepository<Company, Long> {
+}

+ 0 - 8
src/main/java/com/platform2easy/genesis/domain/repository/ItemCompraRepository.java

@@ -1,8 +0,0 @@
-package com.platform2easy.genesis.domain.repository;
-
-
-import com.platform2easy.genesis.domain.model.ItemCompra;
-import org.springframework.data.jpa.repository.JpaRepository;
-
-public interface ItemCompraRepository extends JpaRepository<ItemCompra, Long> {
-}

+ 7 - 0
src/main/java/com/platform2easy/genesis/domain/repository/TokenRepository.java

@@ -0,0 +1,7 @@
+package com.platform2easy.genesis.domain.repository;
+
+import com.platform2easy.genesis.domain.model.Token;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface TokenRepository extends JpaRepository<Token, Long> {
+}

+ 7 - 0
src/main/java/com/platform2easy/genesis/domain/repository/TxCoinRepository.java

@@ -0,0 +1,7 @@
+package com.platform2easy.genesis.domain.repository;
+
+import com.platform2easy.genesis.domain.model.TxCoin;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface TxCoinRepository extends JpaRepository<TxCoin, String> {
+}

+ 7 - 0
src/main/java/com/platform2easy/genesis/domain/repository/TxTokenRepository.java

@@ -0,0 +1,7 @@
+package com.platform2easy.genesis.domain.repository;
+
+import com.platform2easy.genesis.domain.model.TxToken;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface TxTokenRepository extends JpaRepository<TxToken, String> {
+}

+ 2 - 3
src/main/java/com/platform2easy/genesis/domain/repository/CompraRepository.java → src/main/java/com/platform2easy/genesis/domain/repository/WalletRepository.java

@@ -1,8 +1,7 @@
 package com.platform2easy.genesis.domain.repository;
 
-
-import com.platform2easy.genesis.domain.model.Compra;
+import com.platform2easy.genesis.domain.model.Wallet;
 import org.springframework.data.jpa.repository.JpaRepository;
 
-public interface CompraRepository extends JpaRepository<Compra, Long> {
+public interface WalletRepository extends JpaRepository<Wallet, Long> {
 }

+ 34 - 0
src/main/java/com/platform2easy/genesis/domain/service/CompanyService.java

@@ -0,0 +1,34 @@
+package com.platform2easy.genesis.domain.service;
+
+import com.platform2easy.genesis.domain.model.Company;
+import com.platform2easy.genesis.domain.repository.CompanyRepository;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Service
+@AllArgsConstructor
+public class CompanyService {
+
+    private final CompanyRepository repository;
+
+    @Transactional
+    public Company salvar(Company company) {
+        repository.save(company);
+        return company;
+    }
+
+    public List<Company> listarTodos() {
+        return repository.findAll();
+    }
+
+    public Company buscarPorId(Long id) {
+        return repository.findById(id).orElseThrow();
+    }
+
+    public void deletarPorId(Long id) {
+        repository.deleteById(id);
+    }
+}

+ 0 - 38
src/main/java/com/platform2easy/genesis/domain/service/CompraService.java

@@ -1,38 +0,0 @@
-package com.platform2easy.genesis.domain.service;
-
-import com.platform2easy.genesis.domain.model.Compra;
-import com.platform2easy.genesis.domain.repository.CompraRepository;
-import lombok.AllArgsConstructor;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-
-@Service
-@AllArgsConstructor
-public class CompraService {
-
-    private final CompraRepository repository;
-
-    @Transactional
-    public Compra salvar(Compra compra) {
-
-        compra.getItens().forEach(itemCompra -> itemCompra.setCompra(compra));
-
-        repository.save(compra);
-        return compra;
-    }
-
-    public List<Compra> listarTodos() {
-        return repository.findAll();
-    }
-
-    public Compra buscarPorId(Long id) {
-        return repository.findById(id).get();
-    }
-
-    public void deletarPorId(Long id) {
-        repository.deleteById(id);
-    }
-
-}

+ 34 - 0
src/main/java/com/platform2easy/genesis/domain/service/TokenService.java

@@ -0,0 +1,34 @@
+package com.platform2easy.genesis.domain.service;
+
+import com.platform2easy.genesis.domain.model.Token;
+import com.platform2easy.genesis.domain.repository.TokenRepository;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Service
+@AllArgsConstructor
+public class TokenService {
+
+    private final TokenRepository repository;
+
+    @Transactional
+    public Token salvar(Token token) {
+        repository.save(token);
+        return token;
+    }
+
+    public List<Token> listarTodos() {
+        return repository.findAll();
+    }
+
+    public Token buscarPorId(Long id) {
+        return repository.findById(id).orElseThrow();
+    }
+
+    public void deletarPorId(Long id) {
+        repository.deleteById(id);
+    }
+}

+ 34 - 0
src/main/java/com/platform2easy/genesis/domain/service/TxCoinService.java

@@ -0,0 +1,34 @@
+package com.platform2easy.genesis.domain.service;
+
+import com.platform2easy.genesis.domain.model.TxCoin;
+import com.platform2easy.genesis.domain.repository.TxCoinRepository;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Service
+@AllArgsConstructor
+public class TxCoinService {
+
+    private final TxCoinRepository repository;
+
+    @Transactional
+    public TxCoin salvar(TxCoin txCoin) {
+        repository.save(txCoin);
+        return txCoin;
+    }
+
+    public List<TxCoin> listarTodos() {
+        return repository.findAll();
+    }
+
+    public TxCoin buscarPorId(String id) {
+        return repository.findById(id).orElseThrow();
+    }
+
+    public void deletarPorId(String id) {
+        repository.deleteById(id);
+    }
+}

+ 34 - 0
src/main/java/com/platform2easy/genesis/domain/service/TxTokenService.java

@@ -0,0 +1,34 @@
+package com.platform2easy.genesis.domain.service;
+
+import com.platform2easy.genesis.domain.model.TxToken;
+import com.platform2easy.genesis.domain.repository.TxTokenRepository;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Service
+@AllArgsConstructor
+public class TxTokenService {
+
+    private final TxTokenRepository repository;
+
+    @Transactional
+    public TxToken salvar(TxToken txToken) {
+        repository.save(txToken);
+        return txToken;
+    }
+
+    public List<TxToken> listarTodos() {
+        return repository.findAll();
+    }
+
+    public TxToken buscarPorId(String id) {
+        return repository.findById(id).orElseThrow();
+    }
+
+    public void deletarPorId(String id) {
+        repository.deleteById(id);
+    }
+}

+ 34 - 0
src/main/java/com/platform2easy/genesis/domain/service/WalletService.java

@@ -0,0 +1,34 @@
+package com.platform2easy.genesis.domain.service;
+
+import com.platform2easy.genesis.domain.model.Wallet;
+import com.platform2easy.genesis.domain.repository.WalletRepository;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Service
+@AllArgsConstructor
+public class WalletService {
+
+    private final WalletRepository repository;
+
+    @Transactional
+    public Wallet salvar(Wallet wallet) {
+        repository.save(wallet);
+        return wallet;
+    }
+
+    public List<Wallet> listarTodos() {
+        return repository.findAll();
+    }
+
+    public Wallet buscarPorId(Long id) {
+        return repository.findById(id).orElseThrow();
+    }
+
+    public void deletarPorId(Long id) {
+        repository.deleteById(id);
+    }
+}

+ 49 - 0
src/main/java/com/platform2easy/genesis/web/controller/CompanyController.java

@@ -0,0 +1,49 @@
+package com.platform2easy.genesis.web.controller;
+
+import com.platform2easy.genesis.domain.model.Company;
+import com.platform2easy.genesis.domain.service.CompanyService;
+import lombok.AllArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/company")
+@AllArgsConstructor
+public class CompanyController {
+
+    private final CompanyService service;
+
+    @GetMapping
+    @ResponseStatus(HttpStatus.OK)
+    public List<Company> listAll() {
+        return service.listarTodos();
+    }
+
+    @GetMapping("/{id}")
+    @ResponseStatus(HttpStatus.OK)
+    public Company getById(@PathVariable Long id) {
+        return service.buscarPorId(id);
+    }
+
+    @PostMapping
+    @ResponseStatus(HttpStatus.CREATED)
+    public Company create(@RequestBody Company company) {
+        company.setId(null);
+        return service.salvar(company);
+    }
+
+    @PutMapping("/{id}")
+    @ResponseStatus(HttpStatus.OK)
+    public Company update(@PathVariable Long id, @RequestBody Company company) {
+        company.setId(id);
+        return service.salvar(company);
+    }
+
+    @DeleteMapping("/{id}")
+    @ResponseStatus(HttpStatus.NO_CONTENT)
+    public void delete(@PathVariable Long id) {
+        service.deletarPorId(id);
+    }
+}

+ 0 - 55
src/main/java/com/platform2easy/genesis/web/controller/CompraController.java

@@ -1,55 +0,0 @@
-package com.platform2easy.genesis.web.controller;
-
-import com.platform2easy.genesis.domain.model.Compra;
-import com.platform2easy.genesis.domain.service.CompraService;
-import lombok.AllArgsConstructor;
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-@RestController
-@RequestMapping("/api/compra")
-@AllArgsConstructor
-public class CompraController {
-
-    private final CompraService service;
-
-    // GET /api/compra: Lista todas as Compras
-    @GetMapping
-    @ResponseStatus(HttpStatus.OK)
-    public List<Compra> listAll() {
-        return service.listarTodos();
-    }
-
-    // GET /api/compra/{id}: Busca uma Compra por ID
-    @GetMapping("/{id}")
-    @ResponseStatus(HttpStatus.OK)
-    public Compra getById(@PathVariable Long id) {
-        return service.buscarPorId(id);
-    }
-
-    // POST /api/compra: Cria uma nova Compra
-    @PostMapping
-    @ResponseStatus(HttpStatus.CREATED) // Retorna 201 Created
-    public Compra create(@RequestBody Compra compra) {
-        compra.setId(null);
-        return service.salvar(compra);
-    }
-
-    // PUT /api/compra/{id}: Atualiza uma Compra existente
-    @PutMapping("/{id}")
-    @ResponseStatus(HttpStatus.OK)
-    public Compra update(@PathVariable Long id, @RequestBody Compra compra) {
-        compra.setId(id);
-        return service.salvar(compra);
-    }
-
-    // DELETE /api/compra/{id}: Deleta uma Compra
-    @DeleteMapping("/{id}")
-    // Retorna 204 (No Content) após exclusão
-    @ResponseStatus(HttpStatus.NO_CONTENT)
-    public void delete(@PathVariable Long id) {
-        service.deletarPorId(id);
-    }
-}

+ 49 - 0
src/main/java/com/platform2easy/genesis/web/controller/TokenController.java

@@ -0,0 +1,49 @@
+package com.platform2easy.genesis.web.controller;
+
+import com.platform2easy.genesis.domain.model.Token;
+import com.platform2easy.genesis.domain.service.TokenService;
+import lombok.AllArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/token")
+@AllArgsConstructor
+public class TokenController {
+
+    private final TokenService service;
+
+    @GetMapping
+    @ResponseStatus(HttpStatus.OK)
+    public List<Token> listAll() {
+        return service.listarTodos();
+    }
+
+    @GetMapping("/{id}")
+    @ResponseStatus(HttpStatus.OK)
+    public Token getById(@PathVariable Long id) {
+        return service.buscarPorId(id);
+    }
+
+    @PostMapping
+    @ResponseStatus(HttpStatus.CREATED)
+    public Token create(@RequestBody Token token) {
+        token.setId(null);
+        return service.salvar(token);
+    }
+
+    @PutMapping("/{id}")
+    @ResponseStatus(HttpStatus.OK)
+    public Token update(@PathVariable Long id, @RequestBody Token token) {
+        token.setId(id);
+        return service.salvar(token);
+    }
+
+    @DeleteMapping("/{id}")
+    @ResponseStatus(HttpStatus.NO_CONTENT)
+    public void delete(@PathVariable Long id) {
+        service.deletarPorId(id);
+    }
+}

+ 48 - 0
src/main/java/com/platform2easy/genesis/web/controller/TxCoinController.java

@@ -0,0 +1,48 @@
+package com.platform2easy.genesis.web.controller;
+
+import com.platform2easy.genesis.domain.model.TxCoin;
+import com.platform2easy.genesis.domain.service.TxCoinService;
+import lombok.AllArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/tx_coin")
+@AllArgsConstructor
+public class TxCoinController {
+
+    private final TxCoinService service;
+
+    @GetMapping
+    @ResponseStatus(HttpStatus.OK)
+    public List<TxCoin> listAll() {
+        return service.listarTodos();
+    }
+
+    @GetMapping("/{id}")
+    @ResponseStatus(HttpStatus.OK)
+    public TxCoin getById(@PathVariable String id) {
+        return service.buscarPorId(id);
+    }
+
+    @PostMapping
+    @ResponseStatus(HttpStatus.CREATED)
+    public TxCoin create(@RequestBody TxCoin txCoin) {
+        return service.salvar(txCoin);
+    }
+
+    @PutMapping("/{id}")
+    @ResponseStatus(HttpStatus.OK)
+    public TxCoin update(@PathVariable String id, @RequestBody TxCoin txCoin) {
+        txCoin.setId(id);
+        return service.salvar(txCoin);
+    }
+
+    @DeleteMapping("/{id}")
+    @ResponseStatus(HttpStatus.NO_CONTENT)
+    public void delete(@PathVariable String id) {
+        service.deletarPorId(id);
+    }
+}

+ 48 - 0
src/main/java/com/platform2easy/genesis/web/controller/TxTokenController.java

@@ -0,0 +1,48 @@
+package com.platform2easy.genesis.web.controller;
+
+import com.platform2easy.genesis.domain.model.TxToken;
+import com.platform2easy.genesis.domain.service.TxTokenService;
+import lombok.AllArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/tx_token")
+@AllArgsConstructor
+public class TxTokenController {
+
+    private final TxTokenService service;
+
+    @GetMapping
+    @ResponseStatus(HttpStatus.OK)
+    public List<TxToken> listAll() {
+        return service.listarTodos();
+    }
+
+    @GetMapping("/{id}")
+    @ResponseStatus(HttpStatus.OK)
+    public TxToken getById(@PathVariable String id) {
+        return service.buscarPorId(id);
+    }
+
+    @PostMapping
+    @ResponseStatus(HttpStatus.CREATED)
+    public TxToken create(@RequestBody TxToken txToken) {
+        return service.salvar(txToken);
+    }
+
+    @PutMapping("/{id}")
+    @ResponseStatus(HttpStatus.OK)
+    public TxToken update(@PathVariable String id, @RequestBody TxToken txToken) {
+        txToken.setId(id);
+        return service.salvar(txToken);
+    }
+
+    @DeleteMapping("/{id}")
+    @ResponseStatus(HttpStatus.NO_CONTENT)
+    public void delete(@PathVariable String id) {
+        service.deletarPorId(id);
+    }
+}

+ 49 - 0
src/main/java/com/platform2easy/genesis/web/controller/WalletController.java

@@ -0,0 +1,49 @@
+package com.platform2easy.genesis.web.controller;
+
+import com.platform2easy.genesis.domain.model.Wallet;
+import com.platform2easy.genesis.domain.service.WalletService;
+import lombok.AllArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/wallet")
+@AllArgsConstructor
+public class WalletController {
+
+    private final WalletService service;
+
+    @GetMapping
+    @ResponseStatus(HttpStatus.OK)
+    public List<Wallet> listAll() {
+        return service.listarTodos();
+    }
+
+    @GetMapping("/{id}")
+    @ResponseStatus(HttpStatus.OK)
+    public Wallet getById(@PathVariable Long id) {
+        return service.buscarPorId(id);
+    }
+
+    @PostMapping
+    @ResponseStatus(HttpStatus.CREATED)
+    public Wallet create(@RequestBody Wallet wallet) {
+        wallet.setId(null);
+        return service.salvar(wallet);
+    }
+
+    @PutMapping("/{id}")
+    @ResponseStatus(HttpStatus.OK)
+    public Wallet update(@PathVariable Long id, @RequestBody Wallet wallet) {
+        wallet.setId(id);
+        return service.salvar(wallet);
+    }
+
+    @DeleteMapping("/{id}")
+    @ResponseStatus(HttpStatus.NO_CONTENT)
+    public void delete(@PathVariable Long id) {
+        service.deletarPorId(id);
+    }
+}