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( FullStore HTTP POST)"])POST EP["isnapp\ncontrole.php\nPHPgetVendas isnapp controle.php PHP 7.3"]3 MY[("MySQL\nBancosetSubmit() OSK")] SS[("MySQL OSK PDV, Trocas Omni, filiais SQL Server\nLX_ZERO_300\nLinx/BI")]Server FSLinx/BI -->|"POSTLX_ZERO_300 getVendas\nCNPJW_BI_FAT_VENDEDOR... CNPJ + período"|periodo EP EPCTEs -->|"PDV+ filiais prepared statement JSON success / Trocasmessage / Omni\nSELECTdata 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.

integracao.

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-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 { }biblioteca classbase do loader fullStoreService carrega classe por UUID/token utilOsk PDO MySQL OSK WOSK\fullStoreService\WebService valida, consulta canais e monta resposta WOSK\Commons\WebService trait: setSubmit(), logs db_sqlserver PDO sqlsrv para e-commerce usa trait instancia Cadeia principal biblioteca {-> +getToken()fullStoreService +injection() } class util { +conexao PDO +setSubmit() } class/ utilOsk {-> +_setConexao() } class WOSK\fullStoreService\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<HOST_SQLSERVER_PROD> 1435<PORTA_PROD> LX_ZERO_300
Homologação 35.198.60.88<HOST_SQLSERVER_HML> 1433<PORTA_HML> LINX_HMLG
Credenciais hardcoded As credenciais do SQL Server estão diretamenteficam em db_sqlserver.phpGaranta 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')