Skip to main content

Arquitetura e Tecnologias

Stack técnico, hierarquia de classes, dependências e conexões com bancos de dados.

Diagrama de componentes

graph LR FS(["FullStore\n(HTTP POST)"]) EP["isnapp\ncontrole.php\nPHP 7.3"] MY[("MySQL\nBanco OSK")] SS[("SQL Server\nLX_ZERO_300\nLinx/BI")] FS -->|"POST getVendas\nCNPJ + período"| EP EP -->|"PDV / Trocas / Omni\nSELECT com CTEs"| MY EP -->|"Resolve filiais\npor CNPJ"| MY EP -->|"W_BI_FAT_VENDEDOR...\nPrepared Statement"| SS EP -->|"JSON consolidado\nsuccess + data"| FS

Figura 1 — Componentes e fluxo de dados da integração.

Stack

Camada Tecnologia Detalhe
Linguagem PHP 7.3 Namespaces, PDO, Traits
Framework CodeIgniter (MY_Controller) Base do backend
Banco operacional MySQL / PDO PDV, Omni, Trocas
Banco BI/e-commerce SQL Server / PDO sqlsrv: Linx LX_ZERO_300
Resposta JSON via setSubmit() Envelope padrão success / message / data

Hierarquia de classes

classDiagram direction TB class MY_Controller { } class biblioteca { +getToken() +injection() } class util { +conexao PDO +setSubmit() } class utilOsk { +_setConexao() } class WebService { <> +run() +setSubmit() } class fullStoreWebService { +getVendasConsolidadas() +consultarVendasPdv() +getTrocas() +getVendaOmni() +buscarDadosEcommercePorLoja() } class db_sqlserver { +conexao PDO +query() } MY_Controller <|-- biblioteca biblioteca <|-- util util <|-- utilOsk utilOsk <|-- fullStoreWebService WebService <.. fullStoreWebService : usa trait db_sqlserver --o fullStoreWebService : instanciado

Figura 2 — Hierarquia de herança e dependências do endpoint.

MY_Controller (CodeIgniter) └── biblioteca → carregamento dinâmico por UUID └── util → define $banco, $conexao (Doctrine DBAL) └── utilOsk → sobrescreve $this->conexao com PDO direto (MySQL OSK) └── WOSK\Commons\WebService (trait) └── fullStoreWebService ← lógica do endpoint │ └── instancia → db_sqlserver (PDO sqlsrv: LX_ZERO_300)

Figura 1 — Cadeia de herança do endpoint FullStore.

Arquivos required

Em controle.php, carregamos três dependências via require_once(APPPATH . '...'):

UUID Arquivo Fornece
4cb18a6c-... wosk_webservice.php Trait WOSK\Commons\WebService — formata JSON (setSubmit), valida campos e salva logs no MySQL
592ccfa0-... utilOsk.php Classe pai — conecta ao MySQL OSK e expõe $this->conexao (PDO)
0670acec-... db_sqlserver.php Gerencia conexão PDO com SQL Server (driver sqlsrv:)

Conexão MySQL

Como configuramos

A classe utilOsk chama getConfiguracao('db_osk_prod') — credenciais armazenadas em Base64 na tabela de configuração do sistema. Em seguida, _setConexao() cria a conexão PDO:

// connection string:
"mysql:host={host};port={porta};dbname={banco}"
// PDO::ATTR_PERSISTENT  = true   (conexão persistente)
// PDO::ATTR_TIMEOUT     = 120    (timeout em segundos)
// charset               = UTF-8

Conexão SQL Server

Instanciamos em buscarDadosEcommercePorLoja()
$sqlserver = new \db_sqlserver(false, 'LX_ZERO_300', true);
// false  = produção (não homologação)
// 'LX_ZERO_300' = banco Linx
// true   = conecta imediatamente
Ambiente Host Porta Banco
Produção 127.0.0.1 1435 LX_ZERO_300
Homologação 35.198.60.88 1433 LINX_HMLG
Credenciais hardcoded As credenciais do SQL Server estão diretamente em db_sqlserver.php. Garanta que esse arquivo não seja exposto em repositórios públicos ou logs de sistema.

Tabelas MySQL utilizadas

Tabela Alias O que fornece
movimentacao m Cabeçalho da transação (tipo, data, situação, módulo)
movimentacao_detalhe md Itens da venda (produto, qtde, preço)
movimentacao_nfe nf / nfe Número, série e situação da NF-e
movimentacao_movimentacao mm Vínculos entre movimentações (troca↔venda, omni↔orçamento)
pessoa v Nome e código do vendedor
entidade e Código da filial / loja
juridica j CNPJ da empresa

Objetos SQL Server utilizados

Objeto Tipo O que fornece
W_BI_FAT_VENDEDOR_VDK_OMNI_V0 View BI Pedidos e-commerce por vendedor: NF, valor, CPF, filial, pedido site/WMS
FILIAIS Tabela Cadastro de filiais — usamos para excluir franquias (TIPO_FILIAL <> 'FRANQUIA')