diff --git a/addon/bluemap/pom.xml b/addon/bluemap/pom.xml index c0daefab32..283bf68b22 100644 --- a/addon/bluemap/pom.xml +++ b/addon/bluemap/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.addon diff --git a/addon/discordsrv/pom.xml b/addon/discordsrv/pom.xml index 2e0521a820..416eb49958 100644 --- a/addon/discordsrv/pom.xml +++ b/addon/discordsrv/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.addon diff --git a/addon/discount/pom.xml b/addon/discount/pom.xml index 38693f7e92..a3cb7e03f4 100644 --- a/addon/discount/pom.xml +++ b/addon/discount/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.addon diff --git a/addon/displaycontrol/pom.xml b/addon/displaycontrol/pom.xml index cf004ca0ef..b9fcea5478 100644 --- a/addon/displaycontrol/pom.xml +++ b/addon/displaycontrol/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.addon diff --git a/addon/dynmap/pom.xml b/addon/dynmap/pom.xml index ec6b01d66b..d65c53bb77 100644 --- a/addon/dynmap/pom.xml +++ b/addon/dynmap/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.addon diff --git a/addon/limited/pom.xml b/addon/limited/pom.xml index 528b8be7d6..914593f672 100644 --- a/addon/limited/pom.xml +++ b/addon/limited/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.addon diff --git a/addon/list/pom.xml b/addon/list/pom.xml index 197e397077..729acc1acf 100644 --- a/addon/list/pom.xml +++ b/addon/list/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.addon diff --git a/addon/plan/pom.xml b/addon/plan/pom.xml index 52ab7e6817..67d1ea1ab5 100644 --- a/addon/plan/pom.xml +++ b/addon/plan/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.addon diff --git a/addon/reremake-migrator/pom.xml b/addon/reremake-migrator/pom.xml index 13825c443f..e5d9272413 100644 --- a/addon/reremake-migrator/pom.xml +++ b/addon/reremake-migrator/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.addon diff --git a/addon/shopitemonly/pom.xml b/addon/shopitemonly/pom.xml index da68b8ce2a..a4668c3ea6 100644 --- a/addon/shopitemonly/pom.xml +++ b/addon/shopitemonly/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.addon diff --git a/compatibility/advancedregionmarket/pom.xml b/compatibility/advancedregionmarket/pom.xml index 9079408c70..35b21fb7be 100644 --- a/compatibility/advancedregionmarket/pom.xml +++ b/compatibility/advancedregionmarket/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/angelchest/pom.xml b/compatibility/angelchest/pom.xml index 403fbef27a..962e96d80f 100644 --- a/compatibility/angelchest/pom.xml +++ b/compatibility/angelchest/pom.xml @@ -6,7 +6,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/bentobox/pom.xml b/compatibility/bentobox/pom.xml index d4449ffc1f..df317785c0 100644 --- a/compatibility/bentobox/pom.xml +++ b/compatibility/bentobox/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/bungeecord-geyser/pom.xml b/compatibility/bungeecord-geyser/pom.xml index e152658c87..5a2e7d56f2 100644 --- a/compatibility/bungeecord-geyser/pom.xml +++ b/compatibility/bungeecord-geyser/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/bungeecord/pom.xml b/compatibility/bungeecord/pom.xml index 104945ad7d..c0399e288d 100644 --- a/compatibility/bungeecord/pom.xml +++ b/compatibility/bungeecord/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/chestprotect/pom.xml b/compatibility/chestprotect/pom.xml index 54f23e2de4..84a66e7138 100644 --- a/compatibility/chestprotect/pom.xml +++ b/compatibility/chestprotect/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/clearlag/pom.xml b/compatibility/clearlag/pom.xml index d97eb9ae64..09ee26082e 100644 --- a/compatibility/clearlag/pom.xml +++ b/compatibility/clearlag/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/common/pom.xml b/compatibility/common/pom.xml index 2e7171d045..1724f996a2 100644 --- a/compatibility/common/pom.xml +++ b/compatibility/common/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/ecoenchants/pom.xml b/compatibility/ecoenchants/pom.xml index 936b1e0d3b..677b9da225 100644 --- a/compatibility/ecoenchants/pom.xml +++ b/compatibility/ecoenchants/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/elitemobs/pom.xml b/compatibility/elitemobs/pom.xml index d55e3143c9..575329061b 100644 --- a/compatibility/elitemobs/pom.xml +++ b/compatibility/elitemobs/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/griefprevention/pom.xml b/compatibility/griefprevention/pom.xml index cea28c6c8b..dc5a299b2e 100644 --- a/compatibility/griefprevention/pom.xml +++ b/compatibility/griefprevention/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/itemsadder/pom.xml b/compatibility/itemsadder/pom.xml index d0c8696d69..b277b6f63d 100644 --- a/compatibility/itemsadder/pom.xml +++ b/compatibility/itemsadder/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/lands/pom.xml b/compatibility/lands/pom.xml index 4192e44596..9fb65519a3 100644 --- a/compatibility/lands/pom.xml +++ b/compatibility/lands/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/openinv/pom.xml b/compatibility/openinv/pom.xml index ee889003fa..947d91c174 100644 --- a/compatibility/openinv/pom.xml +++ b/compatibility/openinv/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/plotsquared/pom.xml b/compatibility/plotsquared/pom.xml index bcfa15814d..ad79c86f35 100644 --- a/compatibility/plotsquared/pom.xml +++ b/compatibility/plotsquared/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/reforges/pom.xml b/compatibility/reforges/pom.xml index 08b960ebfc..5609848196 100644 --- a/compatibility/reforges/pom.xml +++ b/compatibility/reforges/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/residence/pom.xml b/compatibility/residence/pom.xml index 08d7bf5fcd..7b998cb23b 100644 --- a/compatibility/residence/pom.xml +++ b/compatibility/residence/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/slimefun/pom.xml b/compatibility/slimefun/pom.xml index c7eb041d4b..d014c0e8c2 100644 --- a/compatibility/slimefun/pom.xml +++ b/compatibility/slimefun/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/superiorskyblock/pom.xml b/compatibility/superiorskyblock/pom.xml index 8acd3ebd69..2d7db182aa 100644 --- a/compatibility/superiorskyblock/pom.xml +++ b/compatibility/superiorskyblock/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/towny/pom.xml b/compatibility/towny/pom.xml index a1e86307da..63c0f74dba 100644 --- a/compatibility/towny/pom.xml +++ b/compatibility/towny/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/velocity/pom.xml b/compatibility/velocity/pom.xml index c6eeb3d8e7..c945f66f8b 100644 --- a/compatibility/velocity/pom.xml +++ b/compatibility/velocity/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/worldedit/pom.xml b/compatibility/worldedit/pom.xml index b69d0c8e2b..cd1394154c 100644 --- a/compatibility/worldedit/pom.xml +++ b/compatibility/worldedit/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/compatibility/worldguard/pom.xml b/compatibility/worldguard/pom.xml index 4393aa5998..a48a8af0b1 100644 --- a/compatibility/worldguard/pom.xml +++ b/compatibility/worldguard/pom.xml @@ -7,7 +7,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml com.ghostchu.quickshop.compatibility diff --git a/crowdin/lang/zh-CN/messages.yml b/crowdin/lang/zh-CN/messages.yml index fd744847ab..f7a944357a 100644 --- a/crowdin/lang/zh-CN/messages.yml +++ b/crowdin/lang/zh-CN/messages.yml @@ -1541,5 +1541,5 @@ about: - "捐赠密钥 >> {6}" - "由社区提供支持 用 ❤" valid-donation-key: "绑定到 {0}" - invalid-donation-key: "Invalid donation key" + invalid-donation-key: "无效的捐赠密钥" kofi-thanks: "特别感谢那些在 Ko-Fi 上支持 QuickShop 的人 :)" diff --git a/platform/quickshop-platform-interface/pom.xml b/platform/quickshop-platform-interface/pom.xml index 9af8a7aa71..04cdbd7535 100644 --- a/platform/quickshop-platform-interface/pom.xml +++ b/platform/quickshop-platform-interface/pom.xml @@ -8,7 +8,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml diff --git a/platform/quickshop-platform-paper/pom.xml b/platform/quickshop-platform-paper/pom.xml index 4835ef5c51..c94fd87b3f 100644 --- a/platform/quickshop-platform-paper/pom.xml +++ b/platform/quickshop-platform-paper/pom.xml @@ -8,7 +8,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml diff --git a/platform/quickshop-platform-spigot-abstract/pom.xml b/platform/quickshop-platform-spigot-abstract/pom.xml index 6fd4790d30..b51985199c 100644 --- a/platform/quickshop-platform-spigot-abstract/pom.xml +++ b/platform/quickshop-platform-spigot-abstract/pom.xml @@ -8,7 +8,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml diff --git a/platform/quickshop-platform-spigot-v1_18_R1/pom.xml b/platform/quickshop-platform-spigot-v1_18_R1/pom.xml index b6f4d895eb..c81082498f 100644 --- a/platform/quickshop-platform-spigot-v1_18_R1/pom.xml +++ b/platform/quickshop-platform-spigot-v1_18_R1/pom.xml @@ -8,7 +8,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml diff --git a/platform/quickshop-platform-spigot-v1_18_R2/pom.xml b/platform/quickshop-platform-spigot-v1_18_R2/pom.xml index 28210cd9e2..84b72be89b 100644 --- a/platform/quickshop-platform-spigot-v1_18_R2/pom.xml +++ b/platform/quickshop-platform-spigot-v1_18_R2/pom.xml @@ -8,7 +8,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml diff --git a/platform/quickshop-platform-spigot-v1_19_R1/pom.xml b/platform/quickshop-platform-spigot-v1_19_R1/pom.xml index 5ce1c1bf04..9bd963798d 100644 --- a/platform/quickshop-platform-spigot-v1_19_R1/pom.xml +++ b/platform/quickshop-platform-spigot-v1_19_R1/pom.xml @@ -8,7 +8,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml diff --git a/platform/quickshop-platform-spigot-v1_19_R2/pom.xml b/platform/quickshop-platform-spigot-v1_19_R2/pom.xml index 74d179ea9b..56649c6059 100644 --- a/platform/quickshop-platform-spigot-v1_19_R2/pom.xml +++ b/platform/quickshop-platform-spigot-v1_19_R2/pom.xml @@ -8,7 +8,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml diff --git a/platform/quickshop-platform-spigot-v1_19_R3/pom.xml b/platform/quickshop-platform-spigot-v1_19_R3/pom.xml index 68a63b0eca..1fcdddf44b 100644 --- a/platform/quickshop-platform-spigot-v1_19_R3/pom.xml +++ b/platform/quickshop-platform-spigot-v1_19_R3/pom.xml @@ -8,7 +8,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml diff --git a/platform/quickshop-platform-spigot-v1_20_R1/pom.xml b/platform/quickshop-platform-spigot-v1_20_R1/pom.xml index be65cff0aa..bc04ab48f5 100644 --- a/platform/quickshop-platform-spigot-v1_20_R1/pom.xml +++ b/platform/quickshop-platform-spigot-v1_20_R1/pom.xml @@ -8,7 +8,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml diff --git a/platform/quickshop-platform-spigot-v1_20_R2/pom.xml b/platform/quickshop-platform-spigot-v1_20_R2/pom.xml index b60bad0df1..18df639080 100644 --- a/platform/quickshop-platform-spigot-v1_20_R2/pom.xml +++ b/platform/quickshop-platform-spigot-v1_20_R2/pom.xml @@ -8,7 +8,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml diff --git a/platform/quickshop-platform-spigot-v1_20_R3/pom.xml b/platform/quickshop-platform-spigot-v1_20_R3/pom.xml index 99c2d6185c..6cb6102434 100644 --- a/platform/quickshop-platform-spigot-v1_20_R3/pom.xml +++ b/platform/quickshop-platform-spigot-v1_20_R3/pom.xml @@ -8,7 +8,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 ../../pom.xml diff --git a/pom.xml b/pom.xml index 08702b90dc..e8258e653e 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 pom quickshop-hikari Another QuickShop fork diff --git a/quickshop-api/pom.xml b/quickshop-api/pom.xml index 518cb886ec..8673ae36bd 100644 --- a/quickshop-api/pom.xml +++ b/quickshop-api/pom.xml @@ -5,7 +5,7 @@ quickshop-hikari com.ghostchu - 6.0.0.5 + 6.0.0.6 4.0.0 diff --git a/quickshop-bukkit/pom.xml b/quickshop-bukkit/pom.xml index 45ab136382..83a89d5804 100644 --- a/quickshop-bukkit/pom.xml +++ b/quickshop-bukkit/pom.xml @@ -8,7 +8,7 @@ com.ghostchu quickshop-hikari - 6.0.0.5 + 6.0.0.6 quickshop-bukkit diff --git a/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/command/subcommand/SubCommand_History.java b/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/command/subcommand/SubCommand_History.java index bcb5a57503..4cfbb993ba 100644 --- a/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/command/subcommand/SubCommand_History.java +++ b/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/command/subcommand/SubCommand_History.java @@ -20,7 +20,7 @@ public SubCommand_History(QuickShop plugin) { @Override public void onCommand(@NotNull Player sender, @NotNull String commandLabel, @NotNull CommandParser parser) { - final Shop shop = getLookingShop(sender); + Shop shop = getLookingShop(sender); if (shop == null) { plugin.text().of(sender, "not-looking-at-shop").send(); return; diff --git a/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/shop/ContainerShop.java b/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/shop/ContainerShop.java index abbaeb8341..7743b6212f 100644 --- a/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/shop/ContainerShop.java +++ b/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/shop/ContainerShop.java @@ -226,8 +226,9 @@ private void updateShopData() { this.currency = section.getString("currency"); section.set("currency", null); Log.debug("Shop " + this + " currency data upgrade successful."); + setDirty(); } - setDirty(); + } /** diff --git a/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/shop/history/ShopHistory.java b/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/shop/history/ShopHistory.java index edfe36d64d..8857d8fb27 100644 --- a/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/shop/history/ShopHistory.java +++ b/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/shop/history/ShopHistory.java @@ -83,6 +83,47 @@ private CompletableFuture summaryUniquePurchasers(Instant from, Instant to }, QuickExecutor.getShopHistoryQueryExecutor()); } + private CompletableFuture> summaryTopNValuableCustomers(int n) { + return CompletableFuture.supplyAsync(() -> { + LinkedHashMap orderedMap = new LinkedHashMap<>(); + String SQL = "SELECT `buyer`, COUNT(`buyer`) AS `count` FROM %s " + + "WHERE `shop`= ? GROUP BY `buyer` ORDER BY `count` DESC LIMIT " + n; + SQL = String.format(SQL, DataTables.LOG_PURCHASE.getName()); + try (PerfMonitor perfMonitor = new PerfMonitor("summaryTopNValuableCustomers"); + SQLQuery query = plugin.getSqlManager().createQuery().withPreparedSQL(SQL).setParams(shopId, n).execute()) { + perfMonitor.setContext("shopId="+shopId+", n="+n); + ResultSet set = query.getResultSet(); + while (set.next()) { + orderedMap.put(UUID.fromString(set.getString("buyer")), set.getLong("count")); + } + return orderedMap; + } catch (SQLException exception) { + plugin.logger().warn("Failed to summary valuable customers", exception); + return orderedMap; + } + }, QuickExecutor.getShopHistoryQueryExecutor()); + } + + private CompletableFuture summaryUniquePurchasers() { + return CompletableFuture.supplyAsync(() -> { + String SQL = "SELECT COUNT(DISTINCT `buyer`) FROM %s " + + "WHERE `shop`= ?"; + SQL = String.format(SQL, DataTables.LOG_PURCHASE.getName()); + try (PerfMonitor perfMonitor = new PerfMonitor("summaryUniquePurchasers"); + SQLQuery query = plugin.getSqlManager().createQuery().withPreparedSQL(SQL).setParams(shopId).execute()) { + perfMonitor.setContext("shopId="+shopId); + ResultSet set = query.getResultSet(); + if (set.next()) { + return set.getLong(1); + } + return 0L; + } catch (SQLException exception) { + plugin.logger().warn("Failed to summary unique purchasers", exception); + return 0L; + } + }, QuickExecutor.getShopHistoryQueryExecutor()); + } + private CompletableFuture summaryPurchasesBalance(Instant from, Instant to) { return CompletableFuture.supplyAsync(() -> { String SQL = "SELECT SUM(`money`) FROM %s " + @@ -103,7 +144,29 @@ private CompletableFuture summaryPurchasesBalance(Instant from, Instant }, QuickExecutor.getShopHistoryQueryExecutor()); } + private CompletableFuture summaryPurchasesBalance() { + return CompletableFuture.supplyAsync(() -> { + String SQL = "SELECT SUM(`money`) FROM %s " + + "WHERE `shop`= ?"; + SQL = String.format(SQL, DataTables.LOG_PURCHASE.getName()); + try (PerfMonitor perfMonitor = new PerfMonitor("summaryPurchasesBalance"); + SQLQuery query = plugin.getSqlManager().createQuery().withPreparedSQL(SQL).setParams(shopId).execute()) { + perfMonitor.setContext("shopId="+shopId); + ResultSet set = query.getResultSet(); + if (set.next()) { + return set.getDouble(1); + } + return 0.0d; + } catch (SQLException exception) { + plugin.logger().warn("Failed to summary unique purchasers", exception); + return 0d; + } + }, QuickExecutor.getShopHistoryQueryExecutor()); + } + private CompletableFuture summaryPurchasesCount(Instant from, Instant to) { + if((from==null) != (to==null)) + throw new IllegalStateException("from to must null or not null in same time"); return CompletableFuture.supplyAsync(() -> { String SQL = "SELECT COUNT(*) FROM %s " + "WHERE `shop`= ? AND `time` >= ? AND `time` <= ?"; @@ -123,22 +186,40 @@ private CompletableFuture summaryPurchasesCount(Instant from, Instant to) }, QuickExecutor.getShopHistoryQueryExecutor()); } + private CompletableFuture summaryPurchasesCount() { + return CompletableFuture.supplyAsync(() -> { + String SQL = "SELECT COUNT(*) FROM %s " + + "WHERE `shop`= ?"; + SQL = String.format(SQL, DataTables.LOG_PURCHASE.getName()); + try (PerfMonitor perfMonitor = new PerfMonitor("summaryPurchasesCount"); + SQLQuery query = plugin.getSqlManager().createQuery().withPreparedSQL(SQL).setParams(shopId).execute()) { + perfMonitor.setContext("shopId="+shopId); + ResultSet set = query.getResultSet(); + if (set.next()) { + return set.getLong(1); + } + return 0L; + } catch (SQLException exception) { + plugin.logger().warn("Failed to summary unique purchasers", exception); + return 0L; + } + }, QuickExecutor.getShopHistoryQueryExecutor()); + } + public CompletableFuture generateSummary() throws SQLException { long recentPurchases24h = summaryPurchasesCount(Instant.now().minus(24, ChronoUnit.HOURS), Instant.now()).join(); long recentPurchases3d = summaryPurchasesCount(Instant.now().minus(3, ChronoUnit.DAYS), Instant.now()).join(); long recentPurchases7d = summaryPurchasesCount(Instant.now().minus(7, ChronoUnit.DAYS), Instant.now()).join(); long recentPurchases30d = summaryPurchasesCount(Instant.now().minus(30, ChronoUnit.DAYS), Instant.now()).join(); - long totalPurchases = summaryPurchasesCount(Instant.MIN, Instant.now()).join(); - + long totalPurchases = summaryPurchasesCount().join(); double recentPurchasesBalance24h = summaryPurchasesBalance(Instant.now().minus(24, ChronoUnit.HOURS), Instant.now()).join(); double recentPurchasesBalance3d = summaryPurchasesBalance(Instant.now().minus(3, ChronoUnit.DAYS), Instant.now()).join(); double recentPurchasesBalance7d = summaryPurchasesBalance(Instant.now().minus(7, ChronoUnit.DAYS), Instant.now()).join(); double recentPurchasesBalance30d = summaryPurchasesBalance(Instant.now().minus(30, ChronoUnit.DAYS), Instant.now()).join(); - double totalPurchasesBalance = summaryPurchasesBalance(Instant.MIN, Instant.now()).join(); - - long totalUniquePurchases = summaryUniquePurchasers(Instant.MIN, Instant.now()).join(); - LinkedHashMap valuableCustomers = summaryTopNValuableCustomers(5, Instant.MIN, Instant.now()).join(); - + double totalPurchasesBalance = summaryPurchasesBalance().join(); + long totalUniquePurchases = summaryUniquePurchasers().join(); + LinkedHashMap valuableCustomers = summaryTopNValuableCustomers(5).join(); + return CompletableFuture.supplyAsync(() -> new ShopSummary( recentPurchases24h, recentPurchases3d, diff --git a/quickshop-common/pom.xml b/quickshop-common/pom.xml index 43da16dee4..cac857aefc 100644 --- a/quickshop-common/pom.xml +++ b/quickshop-common/pom.xml @@ -5,7 +5,7 @@ quickshop-hikari com.ghostchu - 6.0.0.5 + 6.0.0.6 4.0.0 diff --git a/quickshop-common/src/main/java/com/ghostchu/quickshop/common/util/QuickExecutor.java b/quickshop-common/src/main/java/com/ghostchu/quickshop/common/util/QuickExecutor.java index 0f8f024a19..93509d1091 100644 --- a/quickshop-common/src/main/java/com/ghostchu/quickshop/common/util/QuickExecutor.java +++ b/quickshop-common/src/main/java/com/ghostchu/quickshop/common/util/QuickExecutor.java @@ -20,7 +20,7 @@ private QuickExecutor() { } public static ExecutorService provideShopHistoryQueryExecutor() { - return new ThreadPoolExecutor(1, 1, 60L, TimeUnit.SECONDS, new LinkedBlockingQueue<>()); + return new ThreadPoolExecutor(1, 2, 60L, TimeUnit.SECONDS, new LinkedBlockingQueue<>()); } public static ExecutorService provideHikariCPExecutor() {