Разработка биллинга для Hot-Spot точек Wi-fi

Автор работы: Пользователь скрыл имя, 16 Июня 2014 в 20:02, дипломная работа

Краткое описание

Целью разработки является создание веб-сервиса для потенциальных рекламодателей, который поможет им расширять целевую аудиторию и платить за реальные и фактические просмотры их рекламы, так как бот–просмотры в данном случае практически исключены. Так же целью является увеличение количество точек WI-FI в определённом городе для удобства граждан и возможностью выйти в интернет бесплатно в любом публичном месте.
Актуальность проекта: Беспроводные локальные сети являются достаточно часто востребованной темой на сегодняшний день, ведь это не только самый лучший способ связать в единую сеть несколько разнотипных устройств, но и возможность осуществлять высокоскоростную передачу и приём данных, оставляя при этом устройствам свою мобильность.

Вложенные файлы: 1 файл

диплом.docx

— 578.40 Кб (Скачать файл)

Местная вентиляция обеспечивает вентиляцию непосредственно у рабочего места, а не в объеме всего цеха.

 

 

5.2.8 Защита от воздействия электромагнитного поля

 

 

Таблица 5.3 Предельно допустимые нормы ЭМИ

По электрической составляющей для

Частот

В/м

60 кГц

50

3

30 МГц

20

30

50 МГц

10

50

300 МГц

5

По магнитной составляющей частот

А/м

60 кГц

1,5 МГц

5

30

50 МГц

0,3


 

 

 

ЗАКЛЮЧЕНИЕ

 

 

Задача состоящая в разработке основы веб-сервиса выполнена. Были написаны модули для биллинга: оплата, тикеты, загрузка рекламы. Так же был настроен модем с WI-FI роутером. Проведен подсчет экономической составляющей, на основе чего можно полагать, что проект может заинтересовать инвесторов. Далее планируется разработка новых модулей и обновление всей системы.

Цель  дипломного проекта достигнута. Платформа разработана и находится на стадии эксплуатации.

В наше время вычислительная техника быстро поднимается в верх в сфере массово обслуживания применяется во всех областях деятельности человека. Применение вычислительной техники облегчает труд человека, автоматизирует его, и следовательно, позволяет экономить физические и материальные средства. За время обучения в университет «ТУРАН» приобрели навыки от своих преподавателей по разработке проектов различными средствами, такими как: PHP, HTML, CSS, JAVA, XML, Ajax и т.д.

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

Проект написан на языке гипертекстовой разметки  HTML, с использованием скрипов языка программирования Java и языка PHP. Разработанная мною система  была одобрен руководством фирмы и заверена актом выполненных работ. (см. вложения)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

СПИСОК ЛИТЕРАТУРЫ

 

 

  1. Кубеков Б.С. Технологии разработки программного обеспечения, Алматы, 2011г.
  2. Джон K. ВанДик , Мэт Вестгейт. Pro Drupal 7 Development: Third Edition / Todd Tomlinson . John K. VanDyk - Apress, 2011 .
  3. Стивен Хольцнер . РНР в примерах. / Стивен Хольцнер . М.: 000 «Бином-Пресс», 2012 г. Пер. с англ. 352 с
  4. Ларри Ульман. Ульман Л. Основы программирования на РНР:/Ларри Ульман. Пер. с англ. -М.: ДМК Пресс, 2011. -288 с.: ил. (Самоучитель).
  5. Александр Мазуркевич. MB РНР: настольная книга программиста /Александр Мазуркевич, Дмитрий Еловой. — Мн.: Новое знание, 2013. — 480 с.: ил
  6. Гутманс Э., Баккен С, Ретанс Д. PHP 5. Профессиональное программирование./ Пер. с анrл. СПб: Символ- Плюс, 2011. 704 с., ил.
  7. М. Дубаков. Веб-мастеринг. / Санкт-Петербург, BHV, 2012.
  8. Материалы официального сайта CMS Drupal http://drupal.org/
  9. Материалы и техническая документация сайта русскоязычного сообщества друпал-разработчкиво http://drupal.ru/
  10. Статья "Как работает система фильтров" сайта http://xandeadx.ru/blog/drupal/292
  11. Cтатья "Друпал как MVC Framework " сайта : http://www.cookieslovers.com/content/dru...
  12. Схемы взаимодействия модуля и ядра друпал сайта : http://lin-clark.com/blog/exploring-drup...
  13. Материалы официального сайта языка программирования PHP http://www.php.net/

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение А

(обязательное)

 

Техническое задание на разработку веб-сервиса

  1. Имя сайта: bil.egz.kz
  2. Назначение сайта: платформа для рекламодателей, развитие доступа с сети интернет
  3. Язык сайта: Русский
  4. Основные ключевые слова, наиболее точно отражающие суть предлагаемых товаров и услуг: Wifi Hot-Spot, Реклама

5.    Предполагаемая возрастная аудитория сайта: Предполагаемое возрастное ядро аудитории от 20-40 лет.

    6. Количество страниц сайта: 5 страниц.

7.  Блок-схема сайта: Определяется веб - дизайнером самостоятельно.

Головная (начальная) страница сайта должна содержать гиперссылки,

обеспечивающие переход с нее на все страницы сайта.

    8.  Объем сайта, Мб: 23 Мб

9. Оформление рисунков: Все рисунки объемом более 1 Кб должны быть выполнены с замещающим текстом. Рисунки размером более 15 Кб должны быть выполнены с предпросмотром. Формат всех рисунков   - gif или jpg (jpeg).

10. Пропускная способность линии связи: Среднее время загрузки страниц не должно превышать 35 секунд при скорости соединения 28 Кб/сек. Допускается увеличение времени загрузки отдельных страниц до 40 секунд, но не более чем на 25% числа страниц сайта. Головная (начальная) страница должна иметь время загрузки не более 55 секунд.

Примечание:

Во всех случаях не учитывается время загрузки подгружаемых элементов (счетчики, баннеры, информеры) и т.д.

11. Основной диапазон разрешений мониторов, на  которых будет просматриваться сайт: От 600x800 до 1240x1024 пикселей (от 15" ЭЛТ или 17" LCD). Основное разрешение, на которое оптимизируется сайт: 1024x768 пикселей.

12. Минимальное разрешение монитора, в котором будет просматриваться сайт: 600x800 пикселей.

13. Основной браузер, которым будет просматриваться сайт, и его минимальная версия: Google Chrome 3128 и выше

 

    14. Общий фон сайта: Серый

15. Срок разработки сайта: 4 месяца

 

Приложение Б

 

Листинг программы

 

<?php

class ClientareaController extends Util_Addons_ControllerPublic {

public function _init() {

//Util_Addons_Messages::init();

}

public function indexAction() {

$this->redirect('/clientarea.php');

}

/**

 * Отобразить расшифровку по счетам.

*/

public function invoiceDetailedListAction() {

// фильтр по диапазону дат

$from = $this->getRequest()->getParam('from');

$till = $this->getRequest()->getParam('till');

if($from) {

$tmp = strtotime($from);

if($tmp>0) {

$from = date('Y-m-d', $tmp);

} else {

$from = false;

}

}

$from = $from?$from:date('Y-m-d', strtotime('-3 month'));

if($till) {

$tmp = strtotime($till);

if($tmp>0) {

$till = date('Y-m-d', $tmp);

} else {

Продолжение приложения Б

$till = false;

}

}

$till = $till?$till:date('Y-m-d')

if($from>$till) {

$tmp = $till;

$till = $from;

$from = $tmp;

}

$this->view->from = $from;

$this->view->till = $till;

// проверка диапазона даты оплат

$paid_from = $this->getRequest()->getParam('paid_from');

$paid_till = $this->getRequest()->getParam('paid_till');

if($paid_from) {

$tmp = strtotime($paid_from);

if($tmp>0) {

$paid_from = date('Y-m-d', $tmp);

} else {

$paid_from = false;

}

}

if($paid_till) {

$tmp = strtotime($paid_till);

if($tmp>0) {

$paid_till = date('Y-m-d', $tmp);

} else {

$paid_till = false;

}

}

if($paid_from>$paid_till) {

Продолжение приложения Б

 

                $tmp = $paid_till;

$paid_till = $paid_from;

$paid_from = $tmp;

}

$this->view->paid_from = $paid_from;

$this->view->paid_till = $paid_till;

// фильтр по описанию

$descr = trim($this->getRequest()->getParam('descr'));

if(!empty($descr)) {

$this->view->descr = $descr;

}

$this->view->list = Util_DB::getInstance()->fetchIterator("

SELECT

ii.id, ii.description, ii.amount,

i.id as invoiceid, i.datepaid, i.status, i.date

FROM

tblinvoiceitems AS ii

LEFT JOIN tblinvoices AS i ON (ii.invoiceid=i.id)

WHERE

i.id>0

AND ii.userid = ".($this->getUserId()*1)."

".($from?"AND i.date>='{$from}'":'')."

".($till?"AND i.date<='{$till}'":'')."

".($paid_from?"AND i.datepaid>='{$paid_from} 00:00:00'":'')."

".($paid_till?"AND i.datepaid<='{$paid_till} 23:59:59'":'')."

".($descr?"AND ii.description LIKE ".Util_DB::getInstance()->esc('%'.$descr.'%'):'')."

ORDER BY

ii.id DESC

LIMIT 5000

Продолжение приложения Б

 

")->toArray();

}

 

/**

* Отобразить счета.

*/

public function invoiceListAction() {

    // фильтр по диапазону дат

    $from = $this->getRequest()->getParam('from');

    $till = $this->getRequest()->getParam('till');

    if($from) {

        $tmp = strtotime($from);

        if($tmp>0) {

            $from = date('Y-m-d', $tmp);

        } else {

            $from = false;

        }

    }

    $from = $from?$from:date('Y-m-d', strtotime('-3 month'));

    if($till) {

        $tmp = strtotime($till);

        if($tmp>0) {

            $till = date('Y-m-d', $tmp);

        } else {

            $till = false;

        }

    }

    $till = $till?$till:date('Y-m-d');

    if($from>$till) {

        $tmp = $till;

Продолжение приложения Б

     

  $till = $from;

        $from = $tmp;

    }

    $this->view->from = $from;

    $this->view->till = $till;

    // проверка диапазона  даты оплат

    $paid_from = $this->getRequest()->getParam('paid_from');

    $paid_till = $this->getRequest()->getParam('paid_till');

    if($paid_from) {

        $tmp = strtotime($paid_from);

        if($tmp>0) {

            $paid_from = date('Y-m-d', $tmp);

        } else {

            $paid_from = false;

        }

    }

    if($paid_till) {

        $tmp = strtotime($paid_till);

        if($tmp>0) {

            $paid_till = date('Y-m-d', $tmp);

        } else {

            $paid_till = false;

        }

    }

    if($paid_from>$paid_till) {

        $tmp = $paid_till;

        $paid_till = $paid_from;

        $paid_from = $tmp;

    }

    $this->view->paid_from = $paid_from;

Продолжение приложения Б

   

$this->view->paid_till = $paid_till;

    $this->view->list = Util_DB::getInstance()->fetchIterator("

SELECT

*

FROM

tblinvoices

WHERE

userid = ".($this->getUserId()*1)."

".($from?"AND date>='{$from}'":'')."

".($till?"AND date<='{$till}'":'')."

".($paid_from?"AND datepaid>='{$paid_from} 00:00:00'":'')."

".($paid_till?"AND datepaid<='{$paid_till} 23:59:59'":'')."

ORDER BY

status DESC, id DESC

LIMIT 5000

")->toArray();

}

 

public function createCreditInvoiceAction() {

$userId = $this->getUserId();

$CreditClient = Model_PS_Credit_Client::getManipulator()->find($userId);

if($CreditClient) {

$this->view->CreditClient = $CreditClient;

if($CreditClient->getCreditAmount()<=0) {

$this->msgErr('По кредитной линии  у вас нет никакой задолженности. Не видим смысла выставлять счёт.');

$this->redirect('/clientarea.php');

}

} else {

$this->msgErr('Вам недоступна кредитная  линия.');

Продолжение приложения Б   

$this->redirect('/clientarea.php');

}

}

public function createCreditInvoiceProceedAction() {

$userId = $this->getUserId();

$amount = $this->getRequest()->getParam('amount');

$CreditClient = Model_PS_Credit_Client::getManipulator()->find($userId);

if($CreditClient) {

if($CreditClient->getCreditAmount()>0) {

if(empty($amount)) {

$amount = $CreditClient->getCreditAmount();

}

$invoiceid = $CreditClient->createRepaymentInvoice($amount);

if($invoiceid) {

$this->redirect('/viewinvoice.php?id='.$invoiceid);

} else {

$this->msgErr('Возникли какие-то проблемы  с выставлением счета.');

$this->redirect('/clientarea.php');

}

}

} else {

$this->msgErr('Вам недоступна кредитная  линия.');

$this->redirect('/clientarea.php');

}

}

 

public function cancelInvoiceAction() {

$id = $this->getRequest()->getParam('id')*1;

$Invoice = Model_PS_Invoice::getManipulator()->find($id);

Продолжение приложения Б

 

$this->msgErr('Счёт с №'.$id.' не найден.');

$this->redirect('/clientarea.php?action=invoices');

}

if($Invoice['userid']!=$this->getUserId()) {

$this->msgErr('Счёт с №'.$id.' не принадлежит  вам. В доступе отказано.');

$this->redirect('/clientarea.php?action=invoices');

}

if($Invoice->getStatus()!=='Unpaid') {

    $this->msgErr('Счёт с №'.$id.' отменить нельзя, он имеет статус '.$Invoice->getStatus().'. Можно отменить только неоплаченный счёт.');

    $this->redirect('/clientarea.php?action=invoices');

}

 

try {

    $result = $Invoice->apiSetStatus('Cancelled');

    // делаем возврат на баланс

    if($Invoice->getCredit()>0) {

        $rez = Util_Whmcs::localAPI('addcredit',

                array(

                        'clientid'=>$Invoice->getUserid(),

                        'amount'=>$Invoice->getCredit(),

                        'description'=>'Возврат средств с отмененного счёта #'.$Invoice->getId(),

                )

        );

        if($rez['result']=='success') {

            $Invoice->setTotal($Invoice->getTotal() + $Invoice->getCredit());

            $Invoice->setCredit(0);

            $Invoice->save();

        }

Продолжение приложения Б

  

}

} catch(Exception $e) {

    $this->msgErr($e->getMessage());

    $this->redirect('/clientarea.php?action=invoices');

}

if($result) {

$Log = new Model_PS_ActivityLog();

$Log->update(array(

             'description'=>'Cancelled Invoice - Invoice ID: '.$id,

             'user'=>'Client',

             'userid'=>$this->getUserId(),

));

$Log->save();

$this->msgOk('Счёт с №'.$id.' отменён.');

$this->redirect('/clientarea.php?action=invoices');

}

}

/**

* Изменить период оплаты для  продукта

*/

public function changeProductBillingCycleAction() {

$id = $this->getRequest()->getParam('id')*1;

$cycle = $this->getRequest()->getParam('cycle');

$clientid =  $this->getRequest()->getParam('clientid');

 

if($id<=0) {

$this->msgErr('Некорректно указан id продукта.');

$this->redirect('/clientarea.php?action=products'); 

}

$availableCycles = Array('monthly', 'quarterly', 'semi-annually', 'annually');

Продолжение приложения Б

 

if(!in_array($cycle, $availableCycles)) {

$this->msgErr('Вы указали некорректный  период для оплаты.');

$this->redirect('/clientarea.php?action=productdetails&id='.$id);

}

$rez = Util_Whmcs::localAPI('upgradeproduct', array(

'clientid'=>$clientid,

'serviceid'=>$id,

'type'=>'package',

//'newproductid'=>34,

'newproductbillingcycle'=>$cycle,

'paymentmethod'=>'psbank',

'calconly'=>false,

));

/*

$rez = Util_Whmcs::localAPI('updateclientproduct', array(

'serviceid'=>$id,

'type'=>'product',

'billingcycle'=>$cycle,

'autorecalc'=>1,

));

*/

 

$this->msgOk(print_r($rez, true));

$this->redirect('/clientarea.php?action=products'); 

/**

* Вывести данные пользователя  из сессии

*/

public function sessionAction() {

    Util_Whmcs::print_r($_SESSION)

Продолжение приложения Б

  

$userRow = Model_PS_Client::getInstance($this->getUserId());

    Util_Whmcs::print_r(md5($userRow['id'] . $userRow['password'] . $_SERVER['REMOTE_ADDR']));

}

public function multiClientListAction() {

    $Client = Model_PS_Client::getInstance($this->getUserId());

    if ($Client && $Client->getParentUserId()*1 > 0) {

         $Filter = Util_DB_Filter::create('grid_list')

         ->whereCondition("parentUserId='".$Client->getParentUserId()."'")

         ->setPage($this->getRequest()->getParam('page', 1))

         ->setPerPage($this->getRequest()->getParam('per_page', 20))

         ->set('order_by', $this->getRequest()->getParam('order_by'))

         ->whereParam(array('name'=>'id', 'title'=>'Id', 'sql'=>'id', 'array'=>true))

Информация о работе Разработка биллинга для Hot-Spot точек Wi-fi