Skip to content

Instantly share code, notes, and snippets.

@LukasTsunami
Last active February 16, 2017 14:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save LukasTsunami/74238386cbd5d8fccaa0843d4a26ad8e to your computer and use it in GitHub Desktop.
Save LukasTsunami/74238386cbd5d8fccaa0843d4a26ad8e to your computer and use it in GitHub Desktop.
Lista de Desejo - Leilão
SELECT DISTINCT
/*Informacoes do Objeto*/
o.id,
o.nome,
o.descricao,
o.observacao,
/*Pre Lances por Objeto, num leilão específico*/
C.lista_leiloes_pre_lances,
/*Valores do Objeto e Informações de Venda*/
o.vendido,
o.recebeu_lance,
o.valor_pre_lance,
o.valor_custo,
o.valor_venda,
o.valor_vitrine,
o.total,
/*Imagens*/
IF(i.excluido IS NULL,0,i.excluido) as imagem_excluida,
o.excluido as objeto_excluido,
IF(o.imagem IS NULL OR o.imagem = '','noimage.gif',o.imagem) as imagem_principal,
/*IF(i.url IS NULL,'noimage.gif',i.url) AS imagem_alternativa,*/
IF(i.lista_imagens_objeto IS NULL,'noimage.gif',i.lista_imagens_objeto) AS lista_imagens_objeto,
/*Informações do Fornecedor*/
f.nome as fornecedor,
f.email as fornecedor_email,
f.cpf_cnpj as fornecedor_cpf_cnpj,
f.cep as fornecedor_cep,
f.rua as fornecedor_rua,
f.cidade as fornecedor_cidade,
f.estado as fornecedor_estado,
f.telefone as fornecedor_telefone,
/*Outras Informações do Objeto*/
o.quantidade,
o.dentrada,
o.tipoaquisicao_id,
o.destaque,
o.disponivel,
o.visivel,
/*Informações sobre os Objetos de Desejo no Leilão*/
lo.posicao,
/*Informações sobre o Usuário*/
u.id as usuario_id,
u.senha as senha,
/*Informações sobre a Pessoa*/
p.nome as pessoa_nome,
p.email as pessoa_email
FROM obj_desejo o
INNER JOIN fornecedor as f
ON o.fornecedor_id = f.id
INNER JOIN leilao_obj_desejo as lo
ON lo.obj_desejo_id = o.id
/*
Pega as Imagens Opcionais referentes ao Objeto;
Caso elas estiverem vazias, retorna a url de uma imagem padrão;
Retorna uma Lista de Imagens separadas por vírgula
*/
LEFT JOIN (select GROUP_CONCAT(IF(ii.url IS NULL OR ii.url = '','noimage.gif',ii.url)) AS lista_imagens_objeto,ii.obj_desejo_id,ii.excluido,ii.url FROM imagens ii INNER JOIN obj_desejo ooo ON ii.obj_desejo_id = ooo.id WHERE ooo.excluido=0 AND ii.excluido=0 GROUP BY ii.obj_desejo_id) i
ON i.obj_desejo_id = o.id
INNER JOIN leilao l
ON l.id = lo.leilao_id
/*Pega um vetor de JSON com os Leilões e Pré Lances*/
LEFT JOIN
(SELECT DISTINCT oo.id as oid,p.excluido,p.usuario_id,
REPLACE(
REPLACE(
REPLACE(
REPLACE(
JSON_MERGE(
JSON_OBJECT("_%_%Leiloes_%_%",
REPLACE(
JSON_ARRAY(
COALESCE(
REPLACE(
GROUP_CONCAT(
DISTINCT JSON_OBJECT(
"leilao_id",l.id,
"leilao_nome",l.nome,
"shora_inicio",TIME_FORMAT(l.hora_inicio, '%H:%i'),
'shora_fim',TIME_FORMAT(l.hora_fim, '%H:%i'),
'data_inicio',l.data_inicio,
'data_fim',l.data_fim,
'ativo',l.ativo,
'finalizado',l.finalizado,
'retornado',l.retornado,
'enviado',l.enviado,
'leilao_excluido',l.excluido,
'hora_agora',TIME_TO_SEC(TIME_FORMAT(TIME(CURRENT_TIMESTAMP), '%H:%i')),
'data_atual',DATE(CURRENT_TIMESTAMP),
'hora_inicio',TIME_TO_SEC(TIME_FORMAT(hora_inicio, '%H:%i')),
'hora_fim',TIME_TO_SEC(TIME_FORMAT(hora_fim, '%H:%i'))
)
)
,"""","***")
)
) /*ARRAY*/
,"""","") /*replace*/
)/*OBJECT*/
,
JSON_OBJECT("_%_%Pre_Lances_%_%",
REPLACE(
JSON_ARRAY(
COALESCE(
REPLACE(
GROUP_CONCAT(
JSON_OBJECT(
'pre_lance_id', p.id,
'valor', p.valor,
'usuario_id', p.usuario_id,
'obj_desejo_id', p.obj_desejo_id,
'leilao_id', p.leilao_id,
'excluido:', p.excluido
)
ORDER BY p.leilao_id,p.valor ASC
)
,"""","***")
)
)
,"""","") /*replace*/
)
)
,"""","")
,"***",'''')
,"_%_%","""")
,'''',"""") as lista_leiloes_pre_lances
FROM pre_lance p
INNER JOIN obj_desejo oo ON p.obj_desejo_id = oo.id
INNER JOIN leilao l ON l.id = p.leilao_id
INNER JOIN usuario u ON u.id=p.usuario_id
WHERE oo.excluido=0 AND p.excluido=0 AND l.excluido=0 AND u.excluido=0
GROUP BY p.obj_desejo_id
) C
ON C.oid = o.id
INNER JOIN usuario u
ON u.id = C.usuario_id
INNER JOIN pessoa p
ON p.id = u.pessoa_id
INNER JOIN lista_desejo ld
ON u.id=ld.usuario_id
AND l.id = ld.leilao_id
WHERE o.excluido=0
AND f.excluido=0
AND lo.excluido=0
AND l.excluido=0
AND C.excluido=0
AND u.excluido=0
AND p.excluido=0
AND ld.excluido=0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment