Deposit money

This commit is contained in:
2025-02-03 12:06:14 +08:00
parent 7b66cdedcd
commit d89cd6f9ce
3 changed files with 62 additions and 6 deletions

View File

@@ -26,7 +26,7 @@ class SolarNetworkConnect : JavaPlugin() {
) )
} }
Bukkit.getPluginCommand("solar")!!.setExecutor(SnCommand(this.sn!!)) Bukkit.getPluginCommand("solar")!!.setExecutor(SnCommand(this.sn!!, this.economy))
Bukkit.getPluginCommand("solar")!!.tabCompleter = SnCommandCompleter() Bukkit.getPluginCommand("solar")!!.tabCompleter = SnCommandCompleter()
logger.info( logger.info(

View File

@@ -4,14 +4,16 @@ import dev.solsynth.snConnect.services.SnOrderService
import dev.solsynth.snConnect.services.SnService import dev.solsynth.snConnect.services.SnService
import net.md_5.bungee.api.chat.ClickEvent import net.md_5.bungee.api.chat.ClickEvent
import net.md_5.bungee.api.chat.TextComponent import net.md_5.bungee.api.chat.TextComponent
import net.milkbowl.vault.economy.Economy
import org.bukkit.ChatColor import org.bukkit.ChatColor
import org.bukkit.Sound
import org.bukkit.command.Command import org.bukkit.command.Command
import org.bukkit.command.CommandExecutor import org.bukkit.command.CommandExecutor
import org.bukkit.command.CommandSender import org.bukkit.command.CommandSender
import org.bukkit.command.TabCompleter import org.bukkit.command.TabCompleter
import org.bukkit.entity.Player import org.bukkit.entity.Player
class SnCommand(private val sn: SnService) : CommandExecutor { class SnCommand(private val sn: SnService, private val eco: Economy?) : CommandExecutor {
override fun onCommand(p0: CommandSender, p1: Command, p2: String, p3: Array<out String>): Boolean { override fun onCommand(p0: CommandSender, p1: Command, p2: String, p3: Array<out String>): Boolean {
if (p0 !is Player) { if (p0 !is Player) {
return false; return false;
@@ -26,22 +28,62 @@ class SnCommand(private val sn: SnService) : CommandExecutor {
return true; return true;
} }
val orderSrv = SnOrderService(sn);
if (p3[1].equals("confirm", ignoreCase = true) && p3.size >= 3) {
// Confirming order
val orderNumber = p3[2].toLongOrNull();
if (orderNumber == null) {
p0.sendMessage(ChatColor.RED.toString() + "Invalid order number, it must be a number.");
return true;
}
p0.sendMessage(ChatColor.GRAY.toString() + "Confirming order, please stand by...");
val order = orderSrv.getOrder(orderNumber);
val bal = order.amount.toDouble() * 100;
eco?.depositPlayer(p0.player, bal)
val doneComponent = TextComponent(ChatColor.GREEN.toString() + "Done!")
val moneyComponent = TextComponent(ChatColor.GOLD.toString()+ChatColor.BOLD + " $bal$")
val suffixComponent = TextComponent(ChatColor.GREEN.toString() +" has been added to your balance.")
p0.playSound(p0.player!!, Sound.BLOCK_ANVIL_PLACE, 1.0F, 1.0F)
p0.spigot().sendMessage(doneComponent, moneyComponent, suffixComponent)
return true;
}
// Creating new order
val amount = p3[1].toDoubleOrNull(); val amount = p3[1].toDoubleOrNull();
if (amount == null) { if (amount == null) {
p0.sendMessage(ChatColor.RED.toString() + "You need to specific an amount of number to deposit.") p0.sendMessage(ChatColor.RED.toString() + "You need to specific an amount of number to deposit.")
return true; return true;
} }
val orderSrv = SnOrderService(sn); p0.sendMessage(ChatColor.GRAY.toString() + "Creating order, please stand by...");
val order = orderSrv.createOrder("Deposit to Highland MC", amount / 100); val order = orderSrv.createOrder("Deposit to Highland MC", amount / 100);
val linkComponent = TextComponent(ChatColor.GOLD.toString() + "Click here to payment page") val linkComponent =
TextComponent(ChatColor.GOLD.toString() + ChatColor.UNDERLINE.toString() + ChatColor.BOLD.toString() + "click here")
linkComponent.clickEvent = linkComponent.clickEvent =
ClickEvent(ClickEvent.Action.OPEN_URL, "https://solsynth.dev/orders/${order.id}"); ClickEvent(ClickEvent.Action.OPEN_URL, "https://solsynth.dev/orders/${order.id}");
p0.spigot().sendMessage(linkComponent); val orderHintComponent =
TextComponent(ChatColor.GRAY.toString() + "Order created, number " + ChatColor.WHITE + ChatColor.BOLD + "#${order.id}")
val followingComponent = TextComponent(ChatColor.GRAY.toString() + " to the payment page.")
p0.spigot()
.sendMessage(orderHintComponent, linkComponent, followingComponent);
val afterPaidComponent =
TextComponent(ChatColor.UNDERLINE.toString() + ChatColor.YELLOW + "After you paid, click here to confirm payment.")
afterPaidComponent.clickEvent =
ClickEvent(ClickEvent.Action.RUN_COMMAND, "/sn deposit confirm ${order.id}")
p0.spigot().sendMessage(afterPaidComponent);
} }
else -> return false; else -> {
return false
}
} }
return true; return true;

View File

@@ -66,4 +66,18 @@ class SnOrderService(private val sn: SnService) {
return out return out
} }
} }
fun getOrder(id: Long): SnOrder {
val request = Request.Builder()
.url(sn.getUrl("wa", "/orders/$id"))
.get()
.build()
sn.client.newCall(request).execute().use { response ->
if (!response.isSuccessful) throw IOException("Unexpected code $response")
val responseBody = response.body!!.string()
val out = json.decodeFromString<SnOrder>(responseBody)
return out
}
}
} }