maratische (maratische) wrote,
maratische
maratische

Система по продаже билетов и контролю входа на мероприятие на Google App Engine

При продаже билетов на Новогодний праздник компании (корпоратив), возникла проблема, что необходимо продавать билеты, которые нельзя скопировать, я сходу предложил самое простое решение, это генерировать билет с уникальным штрихкодом, который проверить при входе на мероприятие.
Ну раз предложил, мне и делать, на решение задачи было потрачено 2-3 недели поздних вечером дома за компьютером.

Я решил использоваться appengine от google, так как давно хотел разобраться с данной обачной платформой, плюс она на java и интеграция с другими сервисами от Google, особенно меня интересовала интеграция облачного App Engine с Android.

О преимуществах платформы GAE (Google App Engine) я подробно рассказал на небольшом воршопе для коллег, если в двух словах, то платформа позволяет написать простое веб приложение на Servlet/JSP/GWT и любых основывающихся на этих, которое в пару кликов деплоится на сервер, где работает на огромных мощностях с очень прозрачной кластеризацией (для платной версии), так же можно элементарно подключить свое приложение к АПИ любого продукта Google, например к авторизации через Google Accounts. Cоответствено в моем приложении было 3 типа пользователей (пользователь, продавец, администратор) и я это сделал просто добавив пару строчек в проект и не беспокоясь, что аккаунт могут взломать.
article1

Я написал небольшой магазин по продаже билетов (штрихкодов), который спрашивал данные клиента и сколько ему надо билетов, получало подтверждение введенных данных и выдавало билет, так же имелся отдельный функционал для администратора, которые может выдавать права, видеть статистику, билеты и тд
article2

Далее уже началось самое сложное, я написал android приложение на телефоне, которое получало список билетов и далее при помощи камеры распознавало штрих кода и определяло, можно войти данному клиенту или нет, отправляя отчет на сервер.
Но от данной идее пришлось отказаться, так как было понятно, что сканировать штрих код телефоном, при плохом освещении на дрожащем листе бумаги слишком долго, много времени тратилось на один билет и это могло затормозить проход людей.
Пожалев неделю вечеров потраченных на android, пришлось отложить данную идею сканера.
Была написана аналогичная программа для ноутбука, которая использовала ручной лазерный сканер, которые позаимствовали у одного из ретейл проектов. Процесс сканирования стал мгновенным и перестал зависеть от освещения или времени на фокусировку камеры, лазер позволял проводить проверку буквально за секунду.

На самом празднике меня не было, я уехал в отпуск, но насколько я знаю, было организовано четыре терминала на базе четрых ноутбуков и ручных лазерных сканеров, при помощи которых успешно валидировали все билеты.
Ура, идея удалась и отработала.

Дальше я собираюсь ее развить и использовать в разных других мероприятиях.
Для начала я доделаю прямую интеграцию клиентов и серверной части.
Те валидирующее приложение на android или компьютере будет в real-time загружать на сервер коды прошедщих билетов и получать коды прошедщих через другие терминалы, чтобы нельзя было по одному билету пройти через разные терминалы. На данный момент это можно и при загрузке отчетов после мерприятия мы получили оповещение о одном продублированном билете.
Соответственно можно отдельно будет создать терминал, показывающий график проходов и прочую статистику.
Далее необходимо переделать саму печать билета, добавить возможность редактировать графику на нем, пересылать ссылку на билет покупателю, чтобы он мог распечатать самостоятельно.


Идей для развития масса, я даже подумываю купить ручной bluetooth сканер штрихкодов, который можно подключить к телефону и получить уже возможность создать полноценный мобильный терминал проверки билетов, только необходимо найти модель, которая может сканировать не только лист бумаги, но с экрана.

Про саму платформу, я много рассказывал на воркшопе, но посмотрите кака у нее есть прекрасная админка серверной части, которая например вот так, показывает нагрузку, это один из пиков продаж билетов, когда одновременно работало 3 кассира:

article3

так как это бесплатная версия, то при достижении любого из прогрессбарров 100% - система бы выключилась до начала следующего отчетного периода (отчетный период - 24h), но в продаже билетов единственное что “угрожало” этому, это рассылка емайлов (каждый билет отсылаля мне, для бекапа)

А так система позволяет бесплатно хостить небольшие сайты с достаточно большим функционалом.
Я за вечер перевел туда всех роботов, которые генерят ленты подкастов для сайтов, которые выкладывают аудио просто так, не в виде подкастов, а мне хочется их слушать в телефоне, который умеет скачивать подкасты.

Поэтому пробуйте, сейчас есть масса средств, где можно бесплатно что то сделать и показать это другим.
Tags: android, java, рабочее
Subscribe
Comments for this post were disabled by the author