Перейти к содержимому
Local
pavlabor

Требуется внесение таблицы "все-ко-всем"

Рекомендованные сообщения

Вопрос дополнения базы данных и биллинга таблицей "все-ко-всем", продиктованы следующими потребностями.

Есть модуль "Филиалы".

При подключении данного модуля возникает следующая проблема.

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

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

Далее филиал не может создавать филиал.

 

Такие задачи решаются созданием таблицы "все-ко-всем" в которой формируется каскадное вложение филиалов и связкой соответствующих таблиц сервисов.

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

Более того филиал сможет создавать свои филиалы, контролировать в них данные.

 

Приветствуется любая критика и предложения,

помощь в консультации и программировании.

Спонсирование заинтересованных сторон, приветствуется.

Изменено пользователем pavlabor

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Думаю логично будет назвать например - "матрица прав и доступа" для пользователя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, olsasha сказал:

Думаю логично будет назвать например - "матрица прав и доступа" для пользователя.

Наверно расширенная "матрица прав и доступа" больше подойдет к разделу "Права, введение расширенной настройки прав"

 

Здесь может правильней назвать "строитель дерева".

Работает он как связка  адреса "город + улица + дом".

Задача работа филиалов.

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

При этом каждая ветка филиалов, позволит например просматривать исключительно свой склад и склады филиалов.

 

Практическое решение.

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

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

При этом филиал не сможет смотреть активы дирекции и чужих филиалов, а будет просматривать только свои активы и активы своих филиалов.

Последний филиал, будет видеть только свои активы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 часов назад, pavlabor сказал:

Вопрос дополнения базы данных и биллинга таблицей "все-ко-всем", продиктованы следующими потребностями.

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

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

Сорри, но когда-то в 2000-х решал подобную проблему ...

Ваше видение, ИМХО, не совсем верное :(

Тут нет таблиц "все-ко-всем" ...

Есть древовидная структура с разграничением прав доступа по множителю на уровень "ветки" ... Начиная от Контрагента (или объеденения онных)

Как правило такая структура организуется на уровне программного кода PSQL обычными union запросами ...  (Как Вы выразились на стороне сервера)

Сначала выбираются разрешительные ветки контрагентов (и/или из адресов обслуживания), а потом уже всё что с ними связано ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
11 часов назад, Stroj сказал:

Сорри, но когда-то в 2000-х решал подобную проблему ...

Ваше видение, ИМХО, не совсем верное :(

Тут нет таблиц "все-ко-всем" ...

Есть древовидная структура с разграничением прав доступа по множителю на уровень "ветки" ... Начиная от Контрагента (или объеденения онных)

Как правило такая структура организуется на уровне программного кода PSQL обычными union запросами ...  (Как Вы выразились на стороне сервера)

Сначала выбираются разрешительные ветки контрагентов (и/или из адресов обслуживания), а потом уже всё что с ними связано ...

 

Собственно это стандартная задача "SQL для начинающих. Часть 3"

Связь многие ко многим

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

Для такой связи нам потребуется создать дополнительную таблицу:

graph_4.png

 

Если мы читаем доку на юбиллинг то видим

-  Да, можно сделать для филиала сколько угодно администраторов, либо передать администратору под управление сколько угодно филиалов.

 

То есть такие связки в базе существуют на уровнях "филиал - администратор" и т.д.

CREATE TABLE `branchesadmins` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `branchid` int(11) NOT NULL,
  `admin` varchar(40) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
CREATE TABLE `branchescities` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `branchid` int(11) NOT NULL,
  `cityid` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
CREATE TABLE `branchesservices` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `branchid` int(11) NOT NULL,
  `serviceid` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `branchestariffs` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `branchid` int(11) NOT NULL,
  `tariff` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `branchesusers` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `branchid` int(11) NOT NULL,
  `login` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Но такой связки я не вижу на уровне  "филиал - филиал".

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

На уровне модулей это позволит получать выборки по фильтрам

- только для себя,

- только для себя и моих филиалов.

и ставить ограничение на просмотр активов с других филиалов.

 

Самый практичный вариант это как написано в уроке "потребуется создать дополнительную таблицу",

на уровне запросов, процедур, и прочей серверной приблуды, это сорвет крышу.

 

Я хочу донести идею, возможно что не так выразился, нет проблем уточню.

 

Изменено пользователем pavlabor

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сорри что выпал из темы ... Итак, в не привязки к юбиллинг :(

Как я решал для себя:

Есть "грубо" 3 таблицы:

"owners" - Владельцы чего либо (будь то директор, филиал, склад или товар/услуга)

Структура простейшая:

{

id  - Идентификатор обьекта

sub - Вышестояший идентификатор 

ver - Версия записи (последнего изменения)

Name - наименование ...

Permission - Символьный набор прав действия ака: "wrade" (Write, Read, Add, Delere, Erase).

                      Притом Delete и Erase - это совсем  разное поведение ...

                      Delete - это присваивание "-1" флаг удалено полю ver, Erase - полное удаление всех записей (only superadmin). ...

}

 

Любые изменения не удаляли/редактировали запись, а создавали дубликат с ver+1 ...

Соответственно в выборках всегда бралась "старшая модель", но с возможностью копнуть в историю ...

 

Далее

Была таблица: Actions.

Грубо - говоря заголовок "расходной накладной", откуда- и куда ...

 

Поля:

{

id

Дата/Время,

Ver (версия как и в предыдущей таблицы)

From (С кого)

To (Кому)

Description (Примечание)

}

 

Ну и напоследок таблица Details ...

{

id,

Action id,,

Ver,

Object_id,

Quantity,

Cost

}

Деталировка что, сколько и за сколько передали ...

 

Суть в чем: перавая таблица -  объекты оперирования, любые ...

Вторая описывает с кого и на что передается (притом не важно что), общий принцип:

Ничто ниоткуда не возникает, и никуда бесследно не пропадает!!!

Нет начальных остатков, нет "переучетов" (в классическом смысле), всё считается на лету ...

Ну и последняя таблица - что конкретно, в каком к-ве и по какой цене передается... 

 

 

Это просто общий набросок который я видел, но скорее всего, не  просто не применимый, ибо сомневаюсь что интегрируется в существующую версия биллинга :(

Посему, я со своей идеей (пасую), в 3 месяца - это не реализовать :(

Изменено пользователем Stroj

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

  • Похожие публикации

    • Автор: 005836
      Помогите пожалуйста.
      ОС freebsd 12/freeradius3/mikrotik os 5.24
      Настраивал Ubilling + Mikrotik pppoe по радиусу
      В дебаг режиме радиус говорит

       
    • Автор: nightfly
      Мы знаем, всем уже надоело ждать. Вот, первый в этом году стабильный релиз Ubilling 0.9.5 rev 6653 syoubu da
       
      Из основных изменений
      Изменения в структуре БД. см. дамп. alter.ini: новые опции FWTBT_* управляющие знанием о том, по ком звонит колокол. alter.ini: новая опция CALLSHIST_ENABLED включающая модуль «История звонков». alter.ini: новые необязательные опции PON_UONU_USER_BY_MAC_SEARCH_* управляющие возможностью поиска пользователя по МАС при регистрации ONU из «неизвестных ONU». alter.ini: новая опция IPCHANGE_ARP_CLEANUP указывающая на необходимость очистки от старых arp-записей при смене IP пользователя. alter.ini: новая опция STICKY_REVELATIONS_ENABLED включающая механику откровений. alter.ini: новая опция ISHIMURA_ENABLED включающая планетарный потрошитель Ишимура. alter.ini: новая опция PONCPE_CONTROLS_ENABLED включающая отображение элементов управления для присваивания PON CPE в профиле пользователя. alter.ini: новая необязательная опция PONCPE_TARIFFMASK указывающая маску имени тарифа, для пользователей, для которых требуется учет PON CPE. userstats.ini: добавлена новая необязательная опция AF_TARIFF_ALLOW_ANY позволяющая включить возможность заморозки счета из личного кабинета не взирая на тарифный план абонента. userstats.ini: новая опция ISHIMURA_ENABLED включающая использование трафика Ишимуры при показе статистики. userstats.ini: новая необязательная опция MG_TARIFFSALLOWED при помощи которой можно ограничить тарифы на которых разрешено использование Megogo. Модуль «Планирование работ»: исправлена ошибка, появляющейся при фильтра заявок «Показать задачи только для меня» Модуль «Печать документов»: исправлена работа макроса {CONTRACT} при использовании не уникальных номеров договоров. Модуль «Возможности подключений»: добавлена текстовая пометка о телепатической угаданности пользователя, для упрощения фильтрования. Модуль «Отчет по подключениям»: в статистику мертвых пользователей добавлен раздельный счетчик замороженных. Модуль «Учет зарплат»: для зарплатных ведомостей реализована возможность просмотра/печати без графиков. Модуль SMSZilla: для направления «Интернет» добавлен фильтр активности пользователя. Модуль «Сети и услуги»: из модуля «Смена IP» портирована статистика использования адресов. Модуль «Работники»: добавлена возможность ограничивать сумму пополнения абонентов в месяц Модуль «Финансовый отчет»: исправлена сортировка в сводке за год. Модуль «Отчет по подключениям»: селектор года теперь сохраняет свое состояние. Модуль «Финансовый отчет»: селектор года теперь сохраняет свое состояние. Модуль «Импорт банковских выписок»: оптимизировано быстродействие, возможно исправлена проблема повторного внесения некоторых платежей. Новый модуль По ком звонит колокол: позволяет получать near real-time оповещения о входящих звонках. Модуль [По ком звонит колокол]: исправлены дубликаты отображения входящих звонков Модуль «Текущий кеш FDB»: добавлена возможность навигации из модуля в профиль свитча. askozianum: теперь также логирует входящие звонки в базу. Новый модуль «История звонков»: позволяет просматривать предыдущие входящие звонки ваших абонентов. Модуль Учет зарплат: добавлена возможность отметить для выплаты все работы одним кликом. Модуль «Планирование работ»: исправлена ошибка приводившая к невозможности удаления задач в некоторых ситуациях. Модуль «Телефонный справочник»: теперь использует JQuery Data Tables для показа списка контактов. Модуль «Смена IP»: теперь также умеет чистить за собой старые arp записи при смене IP. Модуль «Объявления»: полностью переделан код, скорость загрузки модуля увеличилось в много раз. Модуль «Персональные заметки и напоминания»: добавлена возможность осыпать всех откровениями. Модуль «Удаление пользователя»: теперь при удалении пользователя также очищаются его детали подключения. Модуль SMSZilla: исправлена работа фильтра «денег не хватит на следующий месяц». Модуль «TrinityTV»: добавлен функционал привязки устройств из личного кабинета абонента. Модуль «Отчет по задачам»: исправлен показ дат в печати. Модуль Склад: история бронирования теперь позволяет нормально отслеживать историю конкретной брони. Модуль «Склад»: теперь умеет рассылать сотрудникам зарезервированные на них ТМЦ скопом, для сверки того что у них в багажниках. Модуль «Статистика по трафику»: теперь также агрегирует при показе нативный трафик коллекторов с трафиком Ишимуры. Модуль «Онлайн»: теперь также агрегирует при показе нативный трафик коллекторов с трафиком Ишимуры. Понизатор: добавлена возможность поиска пользователя(логина и IP) по МАС при регистрации ONU из «неизвестных ONU». Так же для тех, кто использует ONU с NAT, у которых МАС WAN-подключения изменяется на какое-то значение добавлена возможность инкремента/декремента МАС адреса ONU. Модуль «Права администраторов»: добавлена возможность на ходу перелогиниваться в режиме призрака, под другими администраторами. Модуль «Состояние системы»: добавлена возможность уничтожения отдельных ключей кэша. RemoteAPI: добавлен новый вызов warehousetelegram для рассылки зарезервированных ТМЦ. Глобально: в диалогах выбора года расширен диапазон доступных для выбора лет. Глобально: исправлен фильтр ввода email, теперь email может содержать тире Кабинет пользователя: подавлены попытки Google Chrome пытаться автоматически переводить страницу. Кабинет пользователя: исправлены проблемы со входом по логину/паролю. Кабинет пользователя: модуль «Статистика по трафику» теперь также агрегирует нативный трафик коллектора с трафиком Ишимуры при показе. Кабинет пользователя: модуль «Megogo» теперь умеет ограничивать использование сервиса относительно тарифов пользователя. OpenPayz: добавлен фронтэнд для работы с ПриватБанком «PRIVATX_STRICT», призванный обеспечить слегка противоположный фронтэнду «PRIVATMULTI» функционал. OpenPayz: фронтенд «IBOX» - добавлена отдача информации по пользователю UBinstaller: собарны бинарные пакеты для установки биллинга на FreeBSD 12.0 amd64. UBinstaller: для конфигуратора NAS на rscriptd собраны бинарные пакеты для FreeBSD 12.0 amd64. UBinstaller: на мороз выкинуты все неактуальные и не поддерживаемые на данный момент релизы FreeBSD.  
      Также вы можете:
      Почитать полный чейнджлог: http://wiki.ubilling.net.ua/doku.php?id=changelog2019#rev_6653
      Ознакомиться с рекомендациями к обновлению: http://wiki.ubilling.net.ua/doku.php?id=relnotes#section095
      Потрогать руками демку: http://ubilling.net.ua/?module=fnpages&pid=demo
       

    • Автор: Di111
      Привет, простите что не по правилам, не проверял, но должно работать ))
      backend
      robokassa.ini
      frontend - метод отсылки данных POST, если используете GET , меняем ниже $_POST на $_REQUEST
      robokassa.ini
      PASS2="пароль2"
    • Автор: Иван Дураков
      Предлагаю авторам запилить модуль который будет автоматом (например раз в месяц) переводить 1% от прибыли мантейнеру (-ам) этого замечательного билинга.
      Наверняка найдутся зануды которые станут возражать, прошу их проходить мимо. Более того - я настаиваю чтобы этот модуль был включен после установки по умолчанию!
      Жадные, глупые и просто злые люди всегда смогут его выключить парой кликов в админке. Но даже если лишь 10% от тех кто юзает сей продукт согласятся донейтить мизерную сумму на постоянной основе - уверен что это сможет стать хорошей поддержкой авторам а также хорошей мотивацией им помогать вам же, подумайте хорошенько!
      Можно сделать настраиваемыми параметры - процент или фиксированную сумму.
      Автору наверное нужно будет иметь эккаунты во всех платёжнных системах, тогда можно будет автоматически настраиваться на ту которой будет пользоваться владелец билинга. Но уверен что это уже мелочи жизни - всё решаемо, если только захотеть.
      ps: наверное хорошо было бы подвесить эту темку : )
       
      Прошу сообщество поддержать сию идею, а может ктото даже и запилит сам код, как донейшин авторам :))
      pps: столько лет подряд тянуть подобный проект никакого здоровья не хватит. нужно это ценить.
    • Автор: msat
      Юзер водит логин йцукен вместо qwerty
      пароль не имеет значения
      и вместо личного кабинета в браузере получаем 
       
      wrong data input: SELECT `IP` from `users` WHERE `login`='йцукен' AND MD5(`password`)='5fa2bff730d799299a1c095a9f3c031d'
       
      и все, пока куки браузера не очистить, юзеру личный кабинет не доступен
       
      помогите пофиксить.
×