Files
moonwell-core/sql/Store.sql
T

269 lines
16 KiB
SQL

-- --------------------------------------------------------
-- Host: 127.0.0.1
-- Server version: 8.0.30 - MySQL Community Server - GPL
-- Server OS: Win64
-- HeidiSQL Version: 12.3.0.6589
-- --------------------------------------------------------
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!50503 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-- Dumping structure for table store.store_categories
CREATE TABLE IF NOT EXISTS `store_categories` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(765) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
`icon` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
`requiredRank` int DEFAULT NULL,
`flags` int unsigned NOT NULL DEFAULT '0',
`enabled` int unsigned NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- Dumping data for table store.store_categories: ~9 rows (approximately)
INSERT INTO `store_categories` (`id`, `name`, `icon`, `requiredRank`, `flags`, `enabled`) VALUES
(1, 'Рекомендуем', 'inv_helmet_96', 0, 2, 1),
(2, 'Титулы', 'inv_scroll_11', 0, 0, 1),
(3, 'Предметы', 'ability_warrior_challange', 0, 0, 1),
(4, 'Транспорт и питомцы', 'inv_box_petcarrier_01', 0, 0, 1),
(5, 'Усиления', 'spell_holy_surgeoflight', 0, 0, 1),
(6, 'Услуги', 'vas_charactertransfer', 0, 0, 1),
(7, 'Эффекты', 'spell_holy_holynova', 0, 0, 1),
(8, 'Распродажа', 'inv_misc_toy_07', 0, 1, 1),
(9, 'VIP', 'inv_misc_note_03', 4, 0, 1);
UPDATE `store_categories` SET `name` = CASE `id`
WHEN 1 THEN 'Рекомендуем' WHEN 2 THEN 'Титулы' WHEN 3 THEN 'Предметы'
WHEN 4 THEN 'Транспорт и питомцы' WHEN 5 THEN 'Усиления' WHEN 6 THEN 'Услуги'
WHEN 7 THEN 'Эффекты' WHEN 8 THEN 'Распродажа' WHEN 9 THEN 'VIP'
ELSE `name` END
WHERE `id` BETWEEN 1 AND 9;
-- Dumping structure for table store.store_category_service_link
CREATE TABLE IF NOT EXISTS `store_category_service_link` (
`category` int unsigned NOT NULL,
`service` int unsigned NOT NULL,
PRIMARY KEY (`category`,`service`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- Dumping data for table store.store_category_service_link: ~14 rows (approximately)
INSERT INTO `store_category_service_link` (`category`, `service`) VALUES
(2, 16),
(3, 5),
(3, 12),
(3, 18),
(4, 8),
(4, 13),
(5, 1),
(5, 14),
(5, 17),
(6, 2),
(6, 3),
(6, 4),
(7, 15);
-- Dumping structure for table store.store_currencies
CREATE TABLE IF NOT EXISTS `store_currencies` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`type` int unsigned NOT NULL DEFAULT '1',
`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
`icon` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
`data` int NOT NULL DEFAULT '0',
`tooltip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- Dumping data for table store.store_currencies: ~2 rows (approximately)
INSERT INTO `store_currencies` (`id`, `type`, `name`, `icon`, `data`, `tooltip`) VALUES
(1, 3, 'Баланс', 'Gold', 0, 'Баланс учётной записи на сайте.');
-- The website account balance is the only in-game store currency. These
-- statements also migrate databases bootstrapped by an older Store.sql.
UPDATE `store_currencies`
SET `type` = 3, `name` = 'Баланс', `icon` = 'Gold', `data` = 0,
`tooltip` = 'Баланс учётной записи на сайте.'
WHERE `id` = 1;
DELETE FROM `store_currencies` WHERE `id` <> 1;
-- Dumping structure for table store.store_logs
CREATE TABLE IF NOT EXISTS `store_logs` (
`account` int DEFAULT NULL,
`guid` int DEFAULT NULL,
`serviceId` int DEFAULT NULL,
`currencyId` int DEFAULT NULL,
`cost` int DEFAULT NULL,
`time` timestamp NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- Dumping data for table store.store_logs: ~29 rows (approximately)
INSERT INTO `store_logs` (`account`, `guid`, `serviceId`, `currencyId`, `cost`, `time`) VALUES
(1, 1, 12, 1, 10, '2023-04-07 03:03:06'),
(1, 1, 12, 1, 5, '2023-04-07 03:04:23'),
(1, 1, 13, 1, 10, '2023-04-07 03:20:42'),
(1, 1, 8, 1, 30, '2023-04-07 03:25:36'),
(1, 1, 12, 2, 5, '2023-04-07 20:04:22'),
(1, 1, 12, 2, 5, '2023-04-07 20:07:47'),
(1, 1, 12, 2, 5, '2023-04-07 20:07:50'),
(1, 1, 12, 2, 5, '2023-04-07 20:10:04'),
(1, 1, 12, 2, 5, '2023-04-07 20:21:48'),
(1, 1, 12, 2, 5, '2023-04-07 20:22:01'),
(1, 1, 12, 2, 5, '2023-04-07 20:22:38'),
(1, 1, 12, 2, 5, '2023-04-07 20:23:45'),
(1, 1, 12, 2, 5, '2023-04-07 20:26:19'),
(1, 1, 13, 1, 10, '2023-04-08 01:14:35'),
(1, 1, 1, 1, 10, '2023-04-08 01:22:52'),
(1, 1, 1, 1, 10, '2023-04-08 01:24:07'),
(1, 1, 1, 1, 10, '2023-04-08 01:25:51'),
(1, 1, 4, 1, 5, '2023-04-08 01:35:36'),
(1, 1, 16, 1, 10, '2023-04-08 01:41:41'),
(1, 1, 16, 1, 10, '2023-04-08 01:44:49'),
(1, 1, 5, 1, 10, '2023-04-08 04:45:17'),
(1, 1, 1, 1, 10, '2023-04-08 19:50:20'),
(1, 1, 1, 1, 10, '2023-04-08 19:51:13'),
(1, 1, 12, 1, 5, '2023-04-08 19:52:20'),
(1, 1, 12, 1, 5, '2023-04-08 19:55:03'),
(1, 1, 12, 1, 5, '2023-04-08 22:23:33'),
(1, 1, 12, 1, 5, '2023-04-08 23:19:16'),
(1, 1, 1, 1, 10, '2023-04-09 02:02:07'),
(1, 1, 1, 2, 10, '2023-04-09 02:06:11'),
(1, 1, 5, 1, 10, '2023-04-09 02:34:41'),
(1, 1, 15, 1, 1, '2023-04-09 03:01:37'),
(1, 1, 18, 1, 50, '2023-04-09 03:29:32');
-- Dumping structure for table store.store_services
CREATE TABLE IF NOT EXISTS `store_services` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`type` int unsigned DEFAULT NULL,
`name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
`tooltipName` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
`tooltipType` varchar(765) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
`tooltipText` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
`icon` varchar(765) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
`price` int DEFAULT NULL,
`currency` int DEFAULT NULL,
`hyperlinkId` int DEFAULT NULL,
`creatureEntry` int DEFAULT NULL,
`discountAmount` int DEFAULT NULL,
`flags` int DEFAULT NULL,
`reward_1` int unsigned DEFAULT NULL,
`reward_2` int unsigned DEFAULT NULL,
`reward_3` int unsigned DEFAULT NULL,
`reward_4` int unsigned DEFAULT NULL,
`reward_5` int unsigned DEFAULT NULL,
`reward_6` int unsigned DEFAULT NULL,
`reward_7` int unsigned DEFAULT NULL,
`reward_8` int unsigned DEFAULT NULL,
`rewardcount_1` int unsigned DEFAULT NULL,
`rewardcount_2` int unsigned DEFAULT NULL,
`rewardcount_3` int unsigned DEFAULT NULL,
`rewardcount_4` int unsigned DEFAULT NULL,
`rewardcount_5` int unsigned DEFAULT NULL,
`rewardcount_6` int unsigned DEFAULT NULL,
`rewardcount_7` int unsigned DEFAULT NULL,
`rewardcount_8` int unsigned DEFAULT NULL,
`new` int unsigned NOT NULL DEFAULT '0',
`enabled` int unsigned DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- Dumping data for table store.store_services: ~13 rows (approximately)
INSERT INTO `store_services` (`id`, `type`, `name`, `tooltipName`, `tooltipType`, `tooltipText`, `icon`, `price`, `currency`, `hyperlinkId`, `creatureEntry`, `discountAmount`, `flags`, `reward_1`, `reward_2`, `reward_3`, `reward_4`, `reward_5`, `reward_6`, `reward_7`, `reward_8`, `rewardcount_1`, `rewardcount_2`, `rewardcount_3`, `rewardcount_4`, `rewardcount_5`, `rewardcount_6`, `rewardcount_7`, `rewardcount_8`, `new`, `enabled`) VALUES
(1, 8, 'Повышение уровня\r\n+10 уровней', 'Повышение уровня', '', 'Повышает уровень персонажа на 10.', 'achievement_level_10', 10, 1, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1),
(2, 7, 'Смена фракции', 'Смена фракции', '', 'Позволяет сменить фракцию персонажа. Станет доступно после повторного входа.', 'vas_factionchange', 5, 1, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1),
(3, 7, 'Смена расы', 'Смена расы', '', 'Позволяет сменить расу персонажа. Станет доступно после повторного входа.', 'vas_racechange', 10, 1, 0, 0, 5, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1),
(4, 7, 'Смена имени', 'Смена имени', '', 'Позволяет сменить имя персонажа. Станет доступно после повторного входа.', 'vas_namechange', 5, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1),
(5, 1, 'Игрушечный меч\r\n(двуручный)', '', 'item', '|cff00FFFFНажмите для предпросмотра|r', 'inv_sword_22', 10, 1, 45061, 45061, 0, 1, 45061, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1),
(8, 3, 'Стремительный призрачный тигр\r\n(транспорт)', '', 'spell', '|cff00FFFFНажмите для предпросмотра|r', 'ability_mount_spectraltiger', 30, 1, 42777, 24004, 0, 0, 42777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1),
(12, 1, 'Эпическая лиловая рубашка', '', 'item', '|cff00FFFFНажмите для предпросмотра|r', 'inv_shirt_purple_01', 10, 1, 45037, 45037, 5, 1, 45037, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1),
(13, 4, 'Луговая курица\r\n(питомец)', '', 'spell', '|cff00FFFFНажмите для предпросмотра|r', 'spell_magic_polymorphchicken', 10, 1, 10686, 7392, 0, 0, 10686, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1),
(14, 8, 'Повышение уровня\r\n+20 уровней', 'Повышение уровня', '', 'Повышает уровень персонажа на 20.', 'achievement_level_20', 20, 1, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1),
(15, 5, 'Эффект\r\nБлагословение могущества', 'Эффект', '', 'Накладывает Благословение могущества.', 'spell_holy_fistofjustice', 1, 1, 0, 0, 0, 0, 27140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1),
(16, 9, 'Титул\r\nЗащитник Наару', 'Титул', '', 'Открывает титул «Защитник Наару».', 'inv_mace_51', 10, 1, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1),
(17, 8, 'Повышение до 60-го уровня', 'Повышение уровня', '', 'Повышает уровень персонажа до 60-го.', 'achievement_level_60', 40, 1, 0, 0, 0, 1, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1),
(18, 1, 'Комплект смокинга', 'Комплект смокинга', '', 'Стильный комплект смокинга.\r\n\r\nСодержит:\r\n\r\n1x Куртка-смокинг\r\n1x Рубашка под смокинг\r\n1x Брюки под смокинг', 'inv_shirt_black_01', 50, 1, 0, 0, 0, 1, 10036, 10035, 10034, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1);
-- Update visible texts in already initialized databases as well.
UPDATE `store_services` SET
`name` = CASE `id`
WHEN 1 THEN 'Повышение уровня\r\n+10 уровней' WHEN 2 THEN 'Смена фракции'
WHEN 3 THEN 'Смена расы' WHEN 4 THEN 'Смена имени'
WHEN 5 THEN 'Игрушечный меч\r\n(двуручный)'
WHEN 8 THEN 'Стремительный призрачный тигр\r\n(транспорт)'
WHEN 12 THEN 'Эпическая лиловая рубашка' WHEN 13 THEN 'Луговая курица\r\n(питомец)'
WHEN 14 THEN 'Повышение уровня\r\n+20 уровней'
WHEN 15 THEN 'Эффект\r\nБлагословение могущества'
WHEN 16 THEN 'Титул\r\nЗащитник Наару' WHEN 17 THEN 'Повышение до 60-го уровня'
WHEN 18 THEN 'Комплект смокинга' ELSE `name` END,
`tooltipName` = CASE `id`
WHEN 1 THEN 'Повышение уровня' WHEN 2 THEN 'Смена фракции' WHEN 3 THEN 'Смена расы'
WHEN 4 THEN 'Смена имени' WHEN 14 THEN 'Повышение уровня' WHEN 15 THEN 'Эффект'
WHEN 16 THEN 'Титул' WHEN 17 THEN 'Повышение уровня' WHEN 18 THEN 'Комплект смокинга'
ELSE `tooltipName` END,
`tooltipText` = CASE `id`
WHEN 1 THEN 'Повышает уровень персонажа на 10.'
WHEN 2 THEN 'Позволяет сменить фракцию персонажа. Станет доступно после повторного входа.'
WHEN 3 THEN 'Позволяет сменить расу персонажа. Станет доступно после повторного входа.'
WHEN 4 THEN 'Позволяет сменить имя персонажа. Станет доступно после повторного входа.'
WHEN 5 THEN '|cff00FFFFНажмите для предпросмотра|r'
WHEN 8 THEN '|cff00FFFFНажмите для предпросмотра|r'
WHEN 12 THEN '|cff00FFFFНажмите для предпросмотра|r'
WHEN 13 THEN '|cff00FFFFНажмите для предпросмотра|r'
WHEN 14 THEN 'Повышает уровень персонажа на 20.'
WHEN 15 THEN 'Накладывает Благословение могущества.'
WHEN 16 THEN 'Открывает титул «Защитник Наару».'
WHEN 17 THEN 'Повышает уровень персонажа до 60-го.'
WHEN 18 THEN 'Стильный комплект смокинга.\r\n\r\nСодержит:\r\n\r\n1x Куртка-смокинг\r\n1x Рубашка под смокинг\r\n1x Брюки под смокинг'
ELSE `tooltipText` END
WHERE `id` IN (1,2,3,4,5,8,12,13,14,15,16,17,18);
UPDATE `store_services` SET `currency` = 1;
-- Atomic bridge between the website balance and Eluna. It both reserves the
-- funds and writes the website-compatible ledger entry before a reward is sent.
DROP FUNCTION IF EXISTS `acore_auth`.`store_deduct_balance`;
DELIMITER //
CREATE FUNCTION `acore_auth`.`store_deduct_balance`(
p_account_id INT UNSIGNED,
p_amount DECIMAL(14,2),
p_reference VARCHAR(191),
p_character_guid INT UNSIGNED,
p_service_id INT UNSIGNED
) RETURNS DECIMAL(14,2)
DETERMINISTIC
MODIFIES SQL DATA
BEGIN
DECLARE v_balance_after DECIMAL(14,2) DEFAULT -1;
UPDATE `acore_auth`.`account_balances`
SET `balance` = `balance` - p_amount, `updated_at` = CURRENT_TIMESTAMP
WHERE `account_id` = p_account_id
AND p_amount >= 0
AND `balance` >= p_amount;
IF ROW_COUNT() = 1 THEN
SELECT `balance` INTO v_balance_after
FROM `acore_auth`.`account_balances`
WHERE `account_id` = p_account_id;
INSERT INTO `acore_auth`.`balance_transactions`
(`account_id`, `type`, `amount`, `balance_after`, `reference`, `metadata`, `created_at`)
VALUES
(p_account_id, 'store_purchase', -p_amount, v_balance_after, p_reference,
JSON_OBJECT('character_guid', p_character_guid, 'service_id', p_service_id), CURRENT_TIMESTAMP);
END IF;
RETURN v_balance_after;
END//
DELIMITER ;
/*!40103 SET TIME_ZONE=IFNULL(@OLD_TIME_ZONE, 'system') */;
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IFNULL(@OLD_FOREIGN_KEY_CHECKS, 1) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40111 SET SQL_NOTES=IFNULL(@OLD_SQL_NOTES, 1) */;