✏️ 正在编辑: BanrisulRest.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/library/Core/Banco/Service/Banrisul/BanrisulRest.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_Banco_Service_Banrisul_BanrisulRest implements Core_Banco_Service_ImportacaoDireta { private $_dadosUsuarios; private $_usuarioId; protected $_indiceUsuario = 0; private $_tipo; private $_bancoId; private $_url = ''; private $_token = ''; private $_dados; private $_clientToken; private $_naoImportados = []; private $_erros; public function __construct($comissao = false) { $this->_bancoId = Model_Banco::bancoPorNome('BANRISUL'); if(empty($this->_bancoId)){ throw new Yuppie_Exception("Banco Banrisul não está cadastrado."); } $this->_dadosUsuarios = Model_UsuariosApi::getByApi('BANRISUL', 'importacao'); if (count($this->_dadosUsuarios) == 0) { $msgErro = 'Nenhum usuário de API cadastrado.'; throw new Yuppie_Exception($msgErro); } $this->_url = 'https://tecbemlabs.com.br/'; $this->_tipo = !empty($comissao) ? 'comissao' : 'producao'; $this->_usuarioId = $this->_dadosUsuarios[$this->_indiceUsuario]['id']; $this->_dados = [ 'usuario' => $this->_dadosUsuarios[$this->_indiceUsuario]['usuario'], 'senha' => $this->_dadosUsuarios[$this->_indiceUsuario]['senha'] ]; } function getUrl() { return $this->_url; } function getErros() { return $this->_erros; } /** * Método responsável por gerar a chave de acesso (TOKEN) para consumir os demais métodos. * @return boolean */ public function autenticacao() { $url = $this->_url.'Auth/Autenticacao/Autenticar'; $retorno = $this->getResponse($url, $this->_dados, true, true); $this->_token = $retorno['jwtToken']; $this->_clientToken = $retorno['apiKey']; return true; } public function getResponse($url, $params, $auth = false, $post = false) { $header = [ "Content-Type: application/json" ]; if (!$auth) { $header = [ "Authorization: {$this->_token}", "apiKey: {$this->_clientToken}" ]; $url = $url . "?" . http_build_query($params); } $curl = curl_init(); curl_setopt($curl,CURLOPT_RETURNTRANSFER,true); curl_setopt($curl,CURLOPT_URL,$url); curl_setopt($curl,CURLOPT_POST,$post); curl_setopt($curl,CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl,CURLOPT_ENCODING,"UTF-8"); curl_setopt($curl,CURLOPT_HTTPHEADER, $header); if ($auth) curl_setopt($curl,CURLOPT_POSTFIELDS,json_encode($params)); $response = json_decode(curl_exec($curl)); curl_close($curl); if ($auth){ return [ 'apiKey' => $response->retorno->bemWebToken, 'jwtToken' => $response->retorno->jwtToken ]; } return [ 'propostas' => $response->retorno, 'mensagem' => $response->mensagem ]; } public function importar($dataImportacao = null) { $data = self::formatData($dataImportacao); foreach ($this->_dadosUsuarios as $usuario) { $return = []; if($this->autenticacao()){ switch ($this->_tipo){ case "comissao": $propostas = $this->getPropostasComissao($data); $result = $this->detalhamentoPropostasComissao($propostas); $data = $this->_toArray($result); $planilha = new Core_Banco_Service_Banrisul_WebServiceComissionamentoRest($this->_bancoId); $return = $planilha->importar($data); break; case "producao" : $propostas = $this->getPropostas($data); $result = $this->detalhamentoPropostas($propostas); $planilha = new Core_Banco_Service_Banrisul_WebServiceProducaoRest($this->_bancoId, null); $return = $planilha->importar($result); break; } } $this->_naoImportados = array_merge($this->_naoImportados, $return); if (!$this->setProximoUsuario()) { return $this->_naoImportados; } } return $this->_naoImportados; } protected function _toArray($obj) { if(is_object($obj) || is_array($obj)) { $ret = (array) $obj; foreach($ret as &$item) { $item = $this->_toArray($item); } return $ret; } else { return $obj; } } /** * Transforma a data para o padrão Y-m-d * * @param string $dataImportacao * @return string * * @throws Yuppie_Exception */ private static function formatData($dataImportacao) { if (empty($dataImportacao)){ $dt = new DateTime(); return $dt->sub(new DateInterval('P1D'))->format('Y-m-d'); } $data = Core_Util::convertDate($dataImportacao, 'd/m/Y'); if( is_array($data) ){ throw new Yuppie_Exception('Data de importação não pode ser convertida'); } return $data; } /** * Acessa o webservice e retorna o detalhamento de determinada proposta * * @param string $proposta * @return array response */ protected function consultaDetalhamentoProposta($proposta) { $params = [ 'proposta' => $proposta, ]; $url = $this->_url.'Consignado/Consignado/Proposta/ObterDetalhamento'; $response = $this->getResponse($url, $params); return $response['propostas']; } /** * Acessa o webservice e retorna o detalhamento da comissao de determinada proposta * * @param string $contrato * @return array $response */ protected function consultaDetalhamentoPropostaComissao($proposta) { $params = [ 'contrato' => $proposta->contrato, ]; $url = $this->_url.'Consignado/Consignado/Comissao/ObterDetalhamentoContrato'; $response = $this->getResponse($url, $params); return $response['propostas']; } /** * Número das propostas de determinada data * * @param string $dataMovimento * @return array */ protected function getPropostas($dataMovimento) { $params = [ 'dataMovimento' => $dataMovimento, ]; $propostas = []; $url = $this->_url.'Consignado/Consignado/Proposta/ListarPorDataMovimentacao'; $response = $this->getResponse($url, $params); foreach ( $response['propostas'] as $proposta ) { array_push($propostas, $proposta->numero); } return $propostas; } /** * Número das propostas de determinada data * * @param string $dataMovimento * @return array */ protected function getPropostasComissao($dataMovimento) { $params = [ 'DataComissao' => $dataMovimento, ]; $propostas = []; $url = $this->_url.'Consignado/Consignado/Comissao/ListarPorData'; $response = $this->getResponse($url, $params); foreach ( $response['propostas'] as $proposta ) { array_push($propostas, $proposta); } return $propostas; } /** * Todas as propostas detalhadas * * @param array $propostas * @return array */ protected function detalhamentoPropostas($propostas) { $propostasDetalhadas = []; foreach ( $propostas as $proposta ) { $result = $this->detalheProposta($proposta); if( $result ){ $propostasDetalhadas[] = [ $proposta => $result ]; } } return $propostasDetalhadas; } /** * Todas as comissoes detalhadas * * @param array $propostas * @return array */ protected function detalhamentoPropostasComissao($propostas) { $propostasDetalhadas = []; foreach ( $propostas as $proposta ) { $result = $this->detalhePropostaComissao($proposta); if( $result ){ $propostasDetalhadas[] = [ current($proposta) => $result ]; } } return $propostasDetalhadas; } /** * @param string $proposta * @return array */ public function detalheProposta($proposta) { return (array) $this->consultaDetalhamentoProposta($proposta); } /** * @param string $proposta * @return array */ public function detalhePropostaComissao($proposta) { return (array) $this->consultaDetalhamentoPropostaComissao($proposta); } protected function setProximoUsuario($erroAutenticacao = false) { if ($erroAutenticacao) { Model_UsuariosApi::desativarUsuario($this->_usuarioId); } $this->_indiceUsuario++; if (!empty($this->_dadosUsuarios[$this->_indiceUsuario]['id'])) { Yuppie_Log::write("Passando para próximo usuário cadastrado.", $this); $this->_usuarioId = $this->_dadosUsuarios[$this->_indiceUsuario]['id']; $this->_dados = [ 'usuario' => $this->_dadosUsuarios[$this->_indiceUsuario]['usuario'], 'senha' => $this->_dadosUsuarios[$this->_indiceUsuario]['senha'] ]; } else { Yuppie_Log::write("Fim dos usuários.", $this); return false; } return true; } }
💾 保存文件
← 返回文件管理器