Acho que, se você adicionar outro campo como o “visited_at”, funciona.
Isso porque você está usando apenas user_id e current_timestamp, e eles são distintos apenas pelo user_id, já que current_timestamp seria o mesmo em todas as linhas.
Se você adicionar visited_at, eles podem ser distintos, permitindo assim uma insígnia para cada dia.
Mas talvez você já tenha resolvido isso
Edit1: Na verdade, acho que essa consulta não precisa do DISTINCT.
Baseando-me no que @Rafael_Lima_Vasconce sugeriu, criei o seguinte como exemplo de uma insígnia “Páscoa 2019”.
Não tenho nenhuma experiência com SQL além de modificar valores numéricos em algumas consultas de insígnias legais postadas aqui, mas não vejo nenhuma indicação de que isso não funcione (assumindo que você ainda esteja tentando encontrar uma solução).
Se você quiser que as pessoas recebam a insígnia várias vezes, acredito que basta ativar essa opção de marcação ao configurar sua insígnia. Caso contrário, ela deve conceder a insígnia apenas na primeira vez em que visitarem durante o período especificado.