mirror of
https://github.com/MiniDay/HamsterCurrency-Parent.git
synced 2025-08-23 04:35:30 +08:00
feat: 添加数据库日志功能
This commit is contained in:
@@ -1,10 +1,11 @@
|
|||||||
|
//file:noinspection VulnerableLibrariesLocal
|
||||||
plugins {
|
plugins {
|
||||||
id 'java'
|
id 'java'
|
||||||
id 'maven-publish'
|
id 'maven-publish'
|
||||||
}
|
}
|
||||||
|
|
||||||
group 'cn.hamster3'
|
group 'cn.hamster3'
|
||||||
version '2.0.12-SNAPSHOT'
|
version '2.1.0'
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
maven {
|
maven {
|
||||||
@@ -42,7 +43,7 @@ jar {
|
|||||||
destinationDir(rootProject.buildDir)
|
destinationDir(rootProject.buildDir)
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.withType(JavaCompile) {
|
tasks.withType(JavaCompile).configureEach {
|
||||||
options.encoding = 'UTF-8'
|
options.encoding = 'UTF-8'
|
||||||
options.compilerArgs << "-Xlint:unchecked"
|
options.compilerArgs << "-Xlint:unchecked"
|
||||||
}
|
}
|
||||||
@@ -62,7 +63,7 @@ javadoc {
|
|||||||
|
|
||||||
publishing {
|
publishing {
|
||||||
publications {
|
publications {
|
||||||
mavenJava(MavenPublication) {
|
create("mavenJava", MavenPublication.class) {
|
||||||
artifactId = "HamsterCurrency"
|
artifactId = "HamsterCurrency"
|
||||||
artifact jar
|
artifact jar
|
||||||
artifact sourcesJar
|
artifact sourcesJar
|
||||||
|
@@ -38,8 +38,8 @@ public final class HamsterCurrency extends JavaPlugin {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoad() {
|
public void onLoad() {
|
||||||
FileManager.reload(this);
|
|
||||||
logUtils = new LogUtils(this);
|
logUtils = new LogUtils(this);
|
||||||
|
FileManager.reload(this);
|
||||||
logUtils.infoDividingLine();
|
logUtils.infoDividingLine();
|
||||||
if (FileManager.isUseBC()) {
|
if (FileManager.isUseBC()) {
|
||||||
logUtils.info("使用多服务器模式...");
|
logUtils.info("使用多服务器模式...");
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package cn.hamster3.currency.api;
|
package cn.hamster3.currency.api;
|
||||||
|
|
||||||
import cn.hamster3.currency.core.IDataManager;
|
import cn.hamster3.currency.core.IDataManager;
|
||||||
|
import cn.hamster3.currency.data.CurrencyLog;
|
||||||
import cn.hamster3.currency.data.CurrencyType;
|
import cn.hamster3.currency.data.CurrencyType;
|
||||||
import cn.hamster3.currency.data.PlayerData;
|
import cn.hamster3.currency.data.PlayerData;
|
||||||
import org.black_ixx.playerpoints.PlayerPoints;
|
import org.black_ixx.playerpoints.PlayerPoints;
|
||||||
@@ -42,6 +43,7 @@ public abstract class CurrencyAPI {
|
|||||||
}
|
}
|
||||||
data.setPlayerCurrency(currencyID, amount);
|
data.setPlayerCurrency(currencyID, amount);
|
||||||
dataManager.savePlayerData(data);
|
dataManager.savePlayerData(data);
|
||||||
|
dataManager.insertLog(new CurrencyLog(uuid, currencyID, "set", amount, amount));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addPlayerCurrency(UUID uuid, String currencyID, double amount) {
|
public static void addPlayerCurrency(UUID uuid, String currencyID, double amount) {
|
||||||
@@ -53,8 +55,10 @@ public abstract class CurrencyAPI {
|
|||||||
if (data == null) {
|
if (data == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
data.setPlayerCurrency(currencyID, data.getPlayerCurrency(currencyID) + amount);
|
double balance = data.getPlayerCurrency(currencyID) + amount;
|
||||||
|
data.setPlayerCurrency(currencyID, balance);
|
||||||
dataManager.savePlayerData(data);
|
dataManager.savePlayerData(data);
|
||||||
|
dataManager.insertLog(new CurrencyLog(uuid, currencyID, "add", amount, balance));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void takePlayerCurrency(UUID uuid, String currencyID, double amount) {
|
public static void takePlayerCurrency(UUID uuid, String currencyID, double amount) {
|
||||||
@@ -66,8 +70,10 @@ public abstract class CurrencyAPI {
|
|||||||
if (data == null) {
|
if (data == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
data.setPlayerCurrency(currencyID, data.getPlayerCurrency(currencyID) - amount);
|
double balance = data.getPlayerCurrency(currencyID) - amount;
|
||||||
|
data.setPlayerCurrency(currencyID, balance);
|
||||||
dataManager.savePlayerData(data);
|
dataManager.savePlayerData(data);
|
||||||
|
dataManager.insertLog(new CurrencyLog(uuid, currencyID, "take", amount, balance));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean hasPlayerCurrency(UUID uuid, String currencyID, double amount) {
|
public static boolean hasPlayerCurrency(UUID uuid, String currencyID, double amount) {
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package cn.hamster3.currency.command.currency;
|
package cn.hamster3.currency.command.currency;
|
||||||
|
|
||||||
import cn.hamster3.currency.core.IDataManager;
|
import cn.hamster3.currency.core.IDataManager;
|
||||||
|
import cn.hamster3.currency.data.CurrencyLog;
|
||||||
import cn.hamster3.currency.data.CurrencyType;
|
import cn.hamster3.currency.data.CurrencyType;
|
||||||
import cn.hamster3.currency.data.PlayerData;
|
import cn.hamster3.currency.data.PlayerData;
|
||||||
|
|
||||||
@@ -16,7 +17,9 @@ public class CurrencyGiveCommand extends CurrencyAdminSetCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void doSet(PlayerData data, CurrencyType type, double amount) {
|
protected void doSet(PlayerData data, CurrencyType type, double amount) {
|
||||||
data.setPlayerCurrency(type.getId(), data.getPlayerCurrency(type.getId()) + amount);
|
double balance = data.getPlayerCurrency(type.getId()) + amount;
|
||||||
|
data.setPlayerCurrency(type.getId(), balance);
|
||||||
|
dataManager.insertLog(new CurrencyLog(data.getUuid(), type.getId(), "add", amount, balance));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -5,6 +5,7 @@ import cn.hamster3.api.command.CommandExecutor;
|
|||||||
import cn.hamster3.currency.core.FileManager;
|
import cn.hamster3.currency.core.FileManager;
|
||||||
import cn.hamster3.currency.core.IDataManager;
|
import cn.hamster3.currency.core.IDataManager;
|
||||||
import cn.hamster3.currency.core.Message;
|
import cn.hamster3.currency.core.Message;
|
||||||
|
import cn.hamster3.currency.data.CurrencyLog;
|
||||||
import cn.hamster3.currency.data.CurrencyType;
|
import cn.hamster3.currency.data.CurrencyType;
|
||||||
import cn.hamster3.currency.data.PlayerData;
|
import cn.hamster3.currency.data.PlayerData;
|
||||||
import cn.hamster3.service.bukkit.api.ServiceMessageAPI;
|
import cn.hamster3.service.bukkit.api.ServiceMessageAPI;
|
||||||
@@ -25,11 +26,7 @@ public class CurrencyPayCommand extends CommandExecutor {
|
|||||||
"向其他玩家转账",
|
"向其他玩家转账",
|
||||||
"currency.pay",
|
"currency.pay",
|
||||||
Message.notHasPermission.toString(),
|
Message.notHasPermission.toString(),
|
||||||
new String[]{
|
new String[]{"玩家", "货币类型", "数额"}
|
||||||
"玩家",
|
|
||||||
"货币类型",
|
|
||||||
"数额"
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
this.dataManager = dataManager;
|
this.dataManager = dataManager;
|
||||||
}
|
}
|
||||||
@@ -88,10 +85,14 @@ public class CurrencyPayCommand extends CommandExecutor {
|
|||||||
);
|
);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
fromData.setPlayerCurrency(type.getId(), fromData.getPlayerCurrency(type.getId()) - amount);
|
double fromBalance = fromData.getPlayerCurrency(type.getId()) - amount;
|
||||||
toData.setPlayerCurrency(type.getId(), toData.getPlayerCurrency(type.getId()) + amount);
|
fromData.setPlayerCurrency(type.getId(), fromBalance);
|
||||||
|
double toBalance = toData.getPlayerCurrency(type.getId()) + amount;
|
||||||
|
toData.setPlayerCurrency(type.getId(), toBalance);
|
||||||
dataManager.savePlayerData(fromData);
|
dataManager.savePlayerData(fromData);
|
||||||
dataManager.savePlayerData(toData);
|
dataManager.savePlayerData(toData);
|
||||||
|
dataManager.insertLog(new CurrencyLog(fromData.getUuid(), type.getId(), "payOut", amount, fromBalance));
|
||||||
|
dataManager.insertLog(new CurrencyLog(toData.getUuid(), type.getId(), "payIn", amount, toBalance));
|
||||||
sender.sendMessage(
|
sender.sendMessage(
|
||||||
Message.paySuccess.toString()
|
Message.paySuccess.toString()
|
||||||
.replace("%player%", toData.getPlayerName())
|
.replace("%player%", toData.getPlayerName())
|
||||||
|
@@ -10,6 +10,7 @@ import org.bukkit.command.Command;
|
|||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -22,10 +23,7 @@ public class CurrencySeeCommand extends CommandExecutor {
|
|||||||
"查看玩家的货币余额",
|
"查看玩家的货币余额",
|
||||||
"currency.see",
|
"currency.see",
|
||||||
Message.notHasPermission.toString(),
|
Message.notHasPermission.toString(),
|
||||||
new String[]{
|
new String[]{"玩家", "货币类型"}
|
||||||
"货币类型",
|
|
||||||
"玩家"
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
this.dataManager = dataManager;
|
this.dataManager = dataManager;
|
||||||
}
|
}
|
||||||
@@ -38,17 +36,8 @@ public class CurrencySeeCommand extends CommandExecutor {
|
|||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("DuplicatedCode")
|
@SuppressWarnings("DuplicatedCode")
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
if (args.length < 2) {
|
|
||||||
sender.sendMessage(Message.notInputCurrencyType.toString());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
CurrencyType type = dataManager.getCurrencyType(args[1]);
|
|
||||||
if (type == null) {
|
|
||||||
sender.sendMessage(Message.currencyTypeNotFound.toString());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
PlayerData data;
|
PlayerData data;
|
||||||
if (args.length < 3) {
|
if (args.length < 2) {
|
||||||
if (!(sender instanceof Player)) {
|
if (!(sender instanceof Player)) {
|
||||||
sender.sendMessage(Message.notInputPlayerName.toString());
|
sender.sendMessage(Message.notInputPlayerName.toString());
|
||||||
return true;
|
return true;
|
||||||
@@ -60,30 +49,51 @@ public class CurrencySeeCommand extends CommandExecutor {
|
|||||||
sender.sendMessage(Message.notHasPermission.toString());
|
sender.sendMessage(Message.notHasPermission.toString());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
data = dataManager.getPlayerData(args[2]);
|
data = dataManager.getPlayerData(args[1]);
|
||||||
if (data == null) {
|
}
|
||||||
sender.sendMessage(Message.playerNotFound.toString());
|
CurrencyType type = null;
|
||||||
|
if (args.length >= 3) {
|
||||||
|
type = dataManager.getCurrencyType(args[2]);
|
||||||
|
if (type == null) {
|
||||||
|
sender.sendMessage(Message.currencyTypeNotFound.toString());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sender.sendMessage(
|
if (data == null) {
|
||||||
Message.seeCurrency.toString()
|
sender.sendMessage(Message.playerNotFound.toString());
|
||||||
.replace("%player%", data.getPlayerName())
|
return true;
|
||||||
.replace("%type%", type.getId())
|
}
|
||||||
.replace("%amount%", String.format("%.2f", data.getPlayerCurrency(type.getId())))
|
if (type == null) {
|
||||||
);
|
for (CurrencyType currencyType : dataManager.getCurrencyTypes()) {
|
||||||
|
String typeId = currencyType.getId();
|
||||||
|
sender.sendMessage(
|
||||||
|
Message.seeCurrency.toString()
|
||||||
|
.replace("%player%", data.getPlayerName())
|
||||||
|
.replace("%type%", typeId)
|
||||||
|
.replace("%amount%", String.format("%.2f", data.getPlayerCurrency(typeId)))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
String typeId = type.getId();
|
||||||
|
sender.sendMessage(
|
||||||
|
Message.seeCurrency.toString()
|
||||||
|
.replace("%player%", data.getPlayerName())
|
||||||
|
.replace("%type%", typeId)
|
||||||
|
.replace("%amount%", String.format("%.2f", data.getPlayerCurrency(typeId)))
|
||||||
|
);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
||||||
if (args.length == 2) {
|
if (args.length == 2) {
|
||||||
List<String> types = dataManager.getCurrencyTypes().stream().map(CurrencyType::getId).collect(Collectors.toList());
|
return HamsterAPI.getOnlinePlayersName(args[1]);
|
||||||
return HamsterAPI.startWith(types, args[1]);
|
|
||||||
}
|
}
|
||||||
if (args.length == 3) {
|
if (args.length == 3) {
|
||||||
return HamsterAPI.getOnlinePlayersName(args[2]);
|
List<String> types = dataManager.getCurrencyTypes().stream().map(CurrencyType::getId).collect(Collectors.toList());
|
||||||
|
return HamsterAPI.startWith(types, args[2]);
|
||||||
}
|
}
|
||||||
return null;
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package cn.hamster3.currency.command.currency;
|
package cn.hamster3.currency.command.currency;
|
||||||
|
|
||||||
import cn.hamster3.currency.core.IDataManager;
|
import cn.hamster3.currency.core.IDataManager;
|
||||||
|
import cn.hamster3.currency.data.CurrencyLog;
|
||||||
import cn.hamster3.currency.data.CurrencyType;
|
import cn.hamster3.currency.data.CurrencyType;
|
||||||
import cn.hamster3.currency.data.PlayerData;
|
import cn.hamster3.currency.data.PlayerData;
|
||||||
|
|
||||||
@@ -17,6 +18,7 @@ public class CurrencySetCommand extends CurrencyAdminSetCommand {
|
|||||||
@Override
|
@Override
|
||||||
protected void doSet(PlayerData data, CurrencyType type, double amount) {
|
protected void doSet(PlayerData data, CurrencyType type, double amount) {
|
||||||
data.setPlayerCurrency(type.getId(), amount);
|
data.setPlayerCurrency(type.getId(), amount);
|
||||||
|
dataManager.insertLog(new CurrencyLog(data.getUuid(), type.getId(), "set", amount, amount));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package cn.hamster3.currency.command.currency;
|
package cn.hamster3.currency.command.currency;
|
||||||
|
|
||||||
import cn.hamster3.currency.core.IDataManager;
|
import cn.hamster3.currency.core.IDataManager;
|
||||||
|
import cn.hamster3.currency.data.CurrencyLog;
|
||||||
import cn.hamster3.currency.data.CurrencyType;
|
import cn.hamster3.currency.data.CurrencyType;
|
||||||
import cn.hamster3.currency.data.PlayerData;
|
import cn.hamster3.currency.data.PlayerData;
|
||||||
|
|
||||||
@@ -16,7 +17,8 @@ public class CurrencyTakeCommand extends CurrencyAdminSetCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void doSet(PlayerData data, CurrencyType type, double amount) {
|
protected void doSet(PlayerData data, CurrencyType type, double amount) {
|
||||||
data.setPlayerCurrency(type.getId(), data.getPlayerCurrency(type.getId()) - amount);
|
double balance = data.getPlayerCurrency(type.getId()) - amount;
|
||||||
|
data.setPlayerCurrency(type.getId(), balance);
|
||||||
|
dataManager.insertLog(new CurrencyLog(data.getUuid(), type.getId(), "take", amount, balance));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package cn.hamster3.currency.command.vault;
|
package cn.hamster3.currency.command.vault;
|
||||||
|
|
||||||
import cn.hamster3.currency.core.IDataManager;
|
import cn.hamster3.currency.core.IDataManager;
|
||||||
|
import cn.hamster3.currency.data.CurrencyLog;
|
||||||
import cn.hamster3.currency.data.CurrencyType;
|
import cn.hamster3.currency.data.CurrencyType;
|
||||||
import cn.hamster3.currency.data.PlayerData;
|
import cn.hamster3.currency.data.PlayerData;
|
||||||
|
|
||||||
@@ -16,7 +17,8 @@ public class VaultGiveCommand extends VaultAdminSetCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void doSet(PlayerData data, CurrencyType type, double amount) {
|
public void doSet(PlayerData data, CurrencyType type, double amount) {
|
||||||
data.setPlayerCurrency(type.getId(), data.getPlayerCurrency(type.getId()) + amount);
|
double balance = data.getPlayerCurrency(type.getId()) + amount;
|
||||||
|
data.setPlayerCurrency(type.getId(), balance);
|
||||||
|
dataManager.insertLog(new CurrencyLog(data.getUuid(), type.getId(), "add", amount, balance));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -5,6 +5,7 @@ import cn.hamster3.api.command.CommandManager;
|
|||||||
import cn.hamster3.currency.core.FileManager;
|
import cn.hamster3.currency.core.FileManager;
|
||||||
import cn.hamster3.currency.core.IDataManager;
|
import cn.hamster3.currency.core.IDataManager;
|
||||||
import cn.hamster3.currency.core.Message;
|
import cn.hamster3.currency.core.Message;
|
||||||
|
import cn.hamster3.currency.data.CurrencyLog;
|
||||||
import cn.hamster3.currency.data.CurrencyType;
|
import cn.hamster3.currency.data.CurrencyType;
|
||||||
import cn.hamster3.currency.data.PlayerData;
|
import cn.hamster3.currency.data.PlayerData;
|
||||||
import cn.hamster3.service.bukkit.api.ServiceMessageAPI;
|
import cn.hamster3.service.bukkit.api.ServiceMessageAPI;
|
||||||
@@ -88,11 +89,14 @@ public class VaultPayCommand extends CommandManager {
|
|||||||
);
|
);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
double fromBalance = fromData.getPlayerCurrency(type.getId()) - amount;
|
||||||
fromData.setPlayerCurrency(type.getId(), fromData.getPlayerCurrency(type.getId()) - amount);
|
fromData.setPlayerCurrency(type.getId(), fromBalance);
|
||||||
toData.setPlayerCurrency(type.getId(), toData.getPlayerCurrency(type.getId()) + amount);
|
double toBalance = toData.getPlayerCurrency(type.getId()) + amount;
|
||||||
|
toData.setPlayerCurrency(type.getId(), toBalance);
|
||||||
dataManager.savePlayerData(fromData);
|
dataManager.savePlayerData(fromData);
|
||||||
dataManager.savePlayerData(toData);
|
dataManager.savePlayerData(toData);
|
||||||
|
dataManager.insertLog(new CurrencyLog(fromData.getUuid(), type.getId(), "payOut", amount, fromBalance));
|
||||||
|
dataManager.insertLog(new CurrencyLog(toData.getUuid(), type.getId(), "payIn", amount, toBalance));
|
||||||
sender.sendMessage(
|
sender.sendMessage(
|
||||||
Message.paySuccess.toString()
|
Message.paySuccess.toString()
|
||||||
.replace("%player%", toData.getPlayerName())
|
.replace("%player%", toData.getPlayerName())
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package cn.hamster3.currency.command.vault;
|
package cn.hamster3.currency.command.vault;
|
||||||
|
|
||||||
import cn.hamster3.currency.core.IDataManager;
|
import cn.hamster3.currency.core.IDataManager;
|
||||||
|
import cn.hamster3.currency.data.CurrencyLog;
|
||||||
import cn.hamster3.currency.data.CurrencyType;
|
import cn.hamster3.currency.data.CurrencyType;
|
||||||
import cn.hamster3.currency.data.PlayerData;
|
import cn.hamster3.currency.data.PlayerData;
|
||||||
|
|
||||||
@@ -17,5 +18,6 @@ public class VaultSetCommand extends VaultAdminSetCommand {
|
|||||||
@Override
|
@Override
|
||||||
public void doSet(PlayerData data, CurrencyType type, double amount) {
|
public void doSet(PlayerData data, CurrencyType type, double amount) {
|
||||||
data.setPlayerCurrency(type.getId(), amount);
|
data.setPlayerCurrency(type.getId(), amount);
|
||||||
|
dataManager.insertLog(new CurrencyLog(data.getUuid(), type.getId(), "set", amount, amount));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package cn.hamster3.currency.command.vault;
|
package cn.hamster3.currency.command.vault;
|
||||||
|
|
||||||
import cn.hamster3.currency.core.IDataManager;
|
import cn.hamster3.currency.core.IDataManager;
|
||||||
|
import cn.hamster3.currency.data.CurrencyLog;
|
||||||
import cn.hamster3.currency.data.CurrencyType;
|
import cn.hamster3.currency.data.CurrencyType;
|
||||||
import cn.hamster3.currency.data.PlayerData;
|
import cn.hamster3.currency.data.PlayerData;
|
||||||
|
|
||||||
@@ -16,6 +17,8 @@ public class VaultTakeCommand extends VaultAdminSetCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void doSet(PlayerData data, CurrencyType type, double amount) {
|
public void doSet(PlayerData data, CurrencyType type, double amount) {
|
||||||
data.setPlayerCurrency(type.getId(), data.getPlayerCurrency(type.getId()) - amount);
|
double balance = data.getPlayerCurrency(type.getId()) - amount;
|
||||||
|
data.setPlayerCurrency(type.getId(), balance);
|
||||||
|
dataManager.insertLog(new CurrencyLog(data.getUuid(), type.getId(), "take", amount, balance));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package cn.hamster3.currency.core;
|
package cn.hamster3.currency.core;
|
||||||
|
|
||||||
import cn.hamster3.currency.HamsterCurrency;
|
import cn.hamster3.currency.HamsterCurrency;
|
||||||
|
import cn.hamster3.currency.data.CurrencyLog;
|
||||||
import cn.hamster3.currency.data.CurrencyType;
|
import cn.hamster3.currency.data.CurrencyType;
|
||||||
import cn.hamster3.currency.data.PlayerData;
|
import cn.hamster3.currency.data.PlayerData;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
@@ -109,6 +110,10 @@ public class FileDataManager implements IDataManager {
|
|||||||
// 所以这里什么都不做
|
// 所以这里什么都不做
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void insertLog(CurrencyLog log) {
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PlayerData getPlayerData(UUID uuid) {
|
public PlayerData getPlayerData(UUID uuid) {
|
||||||
synchronized (playerData) {
|
synchronized (playerData) {
|
||||||
|
@@ -37,8 +37,7 @@ public abstract class FileManager {
|
|||||||
try {
|
try {
|
||||||
Message.valueOf(key).setMessage(HamsterAPI.replaceColorCode(messagesConfig.getString(key)));
|
Message.valueOf(key).setMessage(HamsterAPI.replaceColorCode(messagesConfig.getString(key)));
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
HamsterCurrency.getLogUtils().warning("初始化消息设置 %s 时发生了一个异常: ", key);
|
HamsterCurrency.getLogUtils().error(e, "初始化消息设置 %s 时发生了一个异常: ", key);
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
package cn.hamster3.currency.core;
|
package cn.hamster3.currency.core;
|
||||||
|
|
||||||
|
import cn.hamster3.currency.data.CurrencyLog;
|
||||||
import cn.hamster3.currency.data.CurrencyType;
|
import cn.hamster3.currency.data.CurrencyType;
|
||||||
import cn.hamster3.currency.data.PlayerData;
|
import cn.hamster3.currency.data.PlayerData;
|
||||||
|
|
||||||
@@ -42,6 +43,8 @@ public interface IDataManager {
|
|||||||
*/
|
*/
|
||||||
void savePlayerData(PlayerData data);
|
void savePlayerData(PlayerData data);
|
||||||
|
|
||||||
|
void insertLog(CurrencyLog log);
|
||||||
|
|
||||||
PlayerData getPlayerData(UUID uuid);
|
PlayerData getPlayerData(UUID uuid);
|
||||||
|
|
||||||
PlayerData getPlayerData(String name);
|
PlayerData getPlayerData(String name);
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package cn.hamster3.currency.core;
|
package cn.hamster3.currency.core;
|
||||||
|
|
||||||
import cn.hamster3.currency.HamsterCurrency;
|
import cn.hamster3.currency.HamsterCurrency;
|
||||||
|
import cn.hamster3.currency.data.CurrencyLog;
|
||||||
import cn.hamster3.currency.data.CurrencyType;
|
import cn.hamster3.currency.data.CurrencyType;
|
||||||
import cn.hamster3.currency.data.PlayerData;
|
import cn.hamster3.currency.data.PlayerData;
|
||||||
import cn.hamster3.service.bukkit.api.ServiceMessageAPI;
|
import cn.hamster3.service.bukkit.api.ServiceMessageAPI;
|
||||||
@@ -14,10 +15,7 @@ import org.bukkit.configuration.file.FileConfiguration;
|
|||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.sql.Connection;
|
import java.sql.*;
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.sql.Statement;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import static cn.hamster3.currency.HamsterCurrency.getLogUtils;
|
import static cn.hamster3.currency.HamsterCurrency.getLogUtils;
|
||||||
@@ -57,6 +55,15 @@ public class SQLDataManager implements IDataManager {
|
|||||||
"uuid VARCHAR(36) PRIMARY KEY," +
|
"uuid VARCHAR(36) PRIMARY KEY," +
|
||||||
"data TEXT" +
|
"data TEXT" +
|
||||||
") CHARACTER SET = utf8mb4;");
|
") CHARACTER SET = utf8mb4;");
|
||||||
|
statement.execute("CREATE TABLE IF NOT EXISTS " + database + ".hamster_currency_logs(" +
|
||||||
|
"uuid VARCHAR(36) NOT NULL," +
|
||||||
|
"type VARCHAR(36) NOT NULL," +
|
||||||
|
"action VARCHAR(36) NOT NULL," +
|
||||||
|
"amount DOUBLE NOT NULL," +
|
||||||
|
"balance DOUBLE NOT NULL," +
|
||||||
|
"time DATETIME NOT NULL DEFAULT NOW()," +
|
||||||
|
"INDEX idx_uuid(uuid)" +
|
||||||
|
") CHARACTER SET = utf8mb4;");
|
||||||
statement.execute("CREATE TABLE IF NOT EXISTS " + database + ".hamster_currency_settings(" +
|
statement.execute("CREATE TABLE IF NOT EXISTS " + database + ".hamster_currency_settings(" +
|
||||||
"title VARCHAR(64) PRIMARY KEY," +
|
"title VARCHAR(64) PRIMARY KEY," +
|
||||||
"data TEXT" +
|
"data TEXT" +
|
||||||
@@ -295,6 +302,26 @@ public class SQLDataManager implements IDataManager {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void insertLog(CurrencyLog log) {
|
||||||
|
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
|
||||||
|
try (Connection connection = dataSource.getConnection()) {
|
||||||
|
try (PreparedStatement statement = connection.prepareStatement(
|
||||||
|
"INSERT INTO " + database + ".hamster_currency_logs VALUES(?, ?, ?, ?, ?, DEFAULT);"
|
||||||
|
)) {
|
||||||
|
statement.setString(1, log.getUuid().toString());
|
||||||
|
statement.setString(2, log.getType());
|
||||||
|
statement.setString(3, log.getAction());
|
||||||
|
statement.setDouble(4, log.getAmount());
|
||||||
|
statement.setDouble(5, log.getBalance());
|
||||||
|
statement.executeUpdate();
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
getLogUtils().error(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PlayerData getPlayerData(UUID uuid) {
|
public PlayerData getPlayerData(UUID uuid) {
|
||||||
synchronized (playerData) {
|
synchronized (playerData) {
|
||||||
|
@@ -0,0 +1,59 @@
|
|||||||
|
package cn.hamster3.currency.data;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class CurrencyLog {
|
||||||
|
@NotNull
|
||||||
|
private final UUID uuid;
|
||||||
|
/**
|
||||||
|
* 货币类型
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
private final String type;
|
||||||
|
/**
|
||||||
|
* 执行的操作
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
private final String action;
|
||||||
|
/**
|
||||||
|
* 执行操作的数额
|
||||||
|
*/
|
||||||
|
private final double amount;
|
||||||
|
/**
|
||||||
|
* 执行操作后的余额
|
||||||
|
*/
|
||||||
|
private final double balance;
|
||||||
|
|
||||||
|
public CurrencyLog(@NotNull UUID uuid, @NotNull String type, @NotNull String action, double amount, double balance) {
|
||||||
|
this.uuid = uuid;
|
||||||
|
this.type = type;
|
||||||
|
this.action = action;
|
||||||
|
this.amount = amount;
|
||||||
|
this.balance = balance;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public UUID getUuid() {
|
||||||
|
return uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public String getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public String getAction() {
|
||||||
|
return action;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getAmount() {
|
||||||
|
return amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getBalance() {
|
||||||
|
return balance;
|
||||||
|
}
|
||||||
|
}
|
@@ -33,7 +33,7 @@ public class PlayerData {
|
|||||||
uuid = UUID.fromString(object.get("uuid").getAsString());
|
uuid = UUID.fromString(object.get("uuid").getAsString());
|
||||||
if (object.has("playerName")) {
|
if (object.has("playerName")) {
|
||||||
playerName = object.get("playerName").getAsString();
|
playerName = object.get("playerName").getAsString();
|
||||||
}else {
|
} else {
|
||||||
playerName = ServiceInfoAPI.getPlayerInfo(uuid).getPlayerName();
|
playerName = ServiceInfoAPI.getPlayerInfo(uuid).getPlayerName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,6 +3,7 @@ package cn.hamster3.currency.hook;
|
|||||||
import cn.hamster3.currency.core.FileManager;
|
import cn.hamster3.currency.core.FileManager;
|
||||||
import cn.hamster3.currency.core.IDataManager;
|
import cn.hamster3.currency.core.IDataManager;
|
||||||
import cn.hamster3.currency.core.Message;
|
import cn.hamster3.currency.core.Message;
|
||||||
|
import cn.hamster3.currency.data.CurrencyLog;
|
||||||
import cn.hamster3.currency.data.PlayerData;
|
import cn.hamster3.currency.data.PlayerData;
|
||||||
import net.milkbowl.vault.economy.AbstractEconomy;
|
import net.milkbowl.vault.economy.AbstractEconomy;
|
||||||
import net.milkbowl.vault.economy.EconomyResponse;
|
import net.milkbowl.vault.economy.EconomyResponse;
|
||||||
@@ -30,11 +31,13 @@ public class VaultEconomyHook extends AbstractEconomy {
|
|||||||
return new EconomyResponse(amount, 0, EconomyResponse.ResponseType.FAILURE, "玩家账户不存在");
|
return new EconomyResponse(amount, 0, EconomyResponse.ResponseType.FAILURE, "玩家账户不存在");
|
||||||
}
|
}
|
||||||
String type = FileManager.getVaultCurrencyType();
|
String type = FileManager.getVaultCurrencyType();
|
||||||
if (data.getPlayerCurrency(type) > 0 && data.getPlayerCurrency(type) + amount < 0) {
|
double balance = data.getPlayerCurrency(type) + amount;
|
||||||
|
if (data.getPlayerCurrency(type) > 0 && balance < 0) {
|
||||||
return new EconomyResponse(amount, 0, EconomyResponse.ResponseType.FAILURE, "玩家金额超出上限");
|
return new EconomyResponse(amount, 0, EconomyResponse.ResponseType.FAILURE, "玩家金额超出上限");
|
||||||
}
|
}
|
||||||
data.setPlayerCurrency(type, data.getPlayerCurrency(type) + amount);
|
data.setPlayerCurrency(type, balance);
|
||||||
dataManager.savePlayerData(data);
|
dataManager.savePlayerData(data);
|
||||||
|
dataManager.insertLog(new CurrencyLog(data.getUuid(), type, "add", amount, balance));
|
||||||
return new EconomyResponse(amount, data.getPlayerCurrency(type), EconomyResponse.ResponseType.SUCCESS, "");
|
return new EconomyResponse(amount, data.getPlayerCurrency(type), EconomyResponse.ResponseType.SUCCESS, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,8 +49,10 @@ public class VaultEconomyHook extends AbstractEconomy {
|
|||||||
if (data.getPlayerCurrency(type) < amount) {
|
if (data.getPlayerCurrency(type) < amount) {
|
||||||
return new EconomyResponse(amount, data.getPlayerCurrency(type), EconomyResponse.ResponseType.FAILURE, "余额不足");
|
return new EconomyResponse(amount, data.getPlayerCurrency(type), EconomyResponse.ResponseType.FAILURE, "余额不足");
|
||||||
}
|
}
|
||||||
data.setPlayerCurrency(type, data.getPlayerCurrency(type) - amount);
|
double balance = data.getPlayerCurrency(type) - amount;
|
||||||
|
data.setPlayerCurrency(type, balance);
|
||||||
dataManager.savePlayerData(data);
|
dataManager.savePlayerData(data);
|
||||||
|
dataManager.insertLog(new CurrencyLog(data.getUuid(), type, "take", amount, balance));
|
||||||
return new EconomyResponse(amount, data.getPlayerCurrency(type), EconomyResponse.ResponseType.SUCCESS, "扣款成功");
|
return new EconomyResponse(amount, data.getPlayerCurrency(type), EconomyResponse.ResponseType.SUCCESS, "扣款成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user