Иконка ресурса

[Qexy] DonateManager - изменение цены на донат для популярной системы авто-доната 1.0.0

Нет прав для скачивания

Kronus

Пользователь
Сообщения
14
Kronus добавил(а) новый ресурс:

[Qexy] DonateManager - изменение цены на донат для популярной системы авто-доната - Плагин сделан для возможности изменять цены на донат

Студия Qexy примерно с 2013 года начала создавать сайты авто-доната для достаточно большого количества проектов Minecraft. Если изменить цену на донат не прибегая ни к каким дополнительным действиям, то доплата будет работать с учётом суммы платежей старых цен на донат. То есть сайт рассчитывает цены исходя из данных об оплате, а не текущих ценах на донат.
С помощью данного плагина можно изменить суммы внесённых платежей, чтобы доплата в дальнейшем работала правильно. Изменять цены следует в...

Узнать больше об этом ресурсе...
 
Практически все клиенты заказывают проекты, где доплата учитывается исходя из текущей привилегии(luckperms, pex, redis и прочее).
А подсчет стоимости исходя из транзакций реализован только в бесплатных ресурсах или кто из клиентов сам захотел такой механизм.

Судя по коду, данный механизм можно реализовать и простым триггером в MySQL при операции обновления цены товара.
Возможно, кому-то будет удобнее делать это через плагин.
 
Практически все клиенты заказывают проекты, где доплата учитывается исходя из текущей привилегии(luckperms, pex, redis и прочее).
А подсчет стоимости исходя из транзакций реализован только в бесплатных ресурсах или кто из клиентов сам захотел такой механизм.

Судя по коду, данный механизм можно реализовать и простым триггером в MySQL при операции обновления цены товара.
Возможно, кому-то будет удобнее делать это через плагин.
В середине 2014 приобретал сайт за 15к и там именно такой механизм. И не понимаю, как это можно средствами MySQL реализовать. Исходный код есть в Jar файле, посмотрите, как это происходит.
 
Примерно так
SQL:
CREATE TRIGGER `qx_items_autoupdate`
AFTER UPDATE ON `qx_items`
FOR EACH ROW BEGIN
    IF OLD.`price` != NEW.`price` THEN
        UPDATE `qx_trans`
        SET `sum` = NEW.`price`
        WHERE `iid` = NEW.`id` AND `status` = 1;
    END IF;
END;
 
Примерно так
SQL:
CREATE TRIGGER `qx_items_autoupdate`
AFTER UPDATE ON `qx_items`
FOR EACH ROW BEGIN
    IF OLD.`price` != NEW.`price` THEN
        UPDATE `qx_trans`
        SET `sum` = NEW.`price`
        WHERE `iid` = NEW.`id` AND `status` = 1;
    END IF;
END;
Едва ли будет работать в случае, если к примеру игрок уже совершал несколько оплат, например
На 100 + 100, и на 3-й дон ему оставалось бы ещё 100 (так как он стоит 300). Когда меняем цену, например просто дешевле на 50%, то сайт при подсчёте цены для доплаты смотрит транзакции в таблице qx_trans (там будет 200), и получится -50 руб надо будет доплатить так как новая цена - 150.
Ну вот собственно в коде, мы сначала смотрим все оплаты и с учётом их выставляем новые суммы в таблице транзакций. То есть меняем сумму, которую вносили донатеры.
 

Вложения

  • Screenshot_9.png
    Screenshot_9.png
    26.6 KB · Просмотры: 7
Тогда так, если я правильно понял суть задачи.
При таком варианте будет обновляться суммы платежей с измененным донатом и платежи, которые выше с учетом типа доната - в плагине это так же стоит добавить, иначе сумма может меняться и у других типов платежей, которым не надо этого делать.
SQL:
BEGIN
    IF OLD.`price` != NEW.`price` AND NEW.`type` = 'permgroup' THEN
    
        UPDATE `qx_trans`
        SET `sum` = `sum` - (OLD.`price` - NEW.`price`)
        WHERE `iid` = NEW.`id` AND `status` = 1;
    
        UPDATE `qx_trans`
        SET `sum` = `sum` + (OLD.`price` - NEW.`price`)
        WHERE `iid` > NEW.`id` AND `status` = 1 AND `type` = 'permgroup';
    END IF;
END
 
qx_trans не хранит типы платежей. На странице плагина есть скриншот таблицы.
Постараюсь максимально просто: при изменении цены на донат плагин берет список всех платежей с iid ниже того, на который мы устанавливаем новую цену и отнимает их сумму с того iid который обновляем.
А если ещё проще, то сайт надо было спроектировать с учётом возможности изменения цен. А именно, при оплате не записывать суммы, чтобы потом их складывать и вычитать от суммы нового доната (до которого хотим доплатить), а считать доплату от цены последнего iid.
Что SQL, что плагин - оба способа костыльные и пока объяснишь что к чему, у прочитавших мои посты мозги сломаются. Но мне понятно, как работает мой сайт, коль столько лет эксплуатировал.
В php и SQL лезть не хочу. Мне прежде всего нравится bukkit api, даже больше чем java
 
Видимо, это из еще более ранних разработок, чем те что у меня сохранились, но согласен - и то и другое костыли.
Суммы платежей туда записывать необходимо, т.к. от них работает и история платежей и проверка при запросах от платежных систем.
 
Назад
Сверху Снизу