From c3404d296a6d948b05feaff20652add05b1cae7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=B0=8F=E5=AE=9D?= <18984316437@189.cn> Date: Fri, 13 Oct 2023 21:16:40 +0800 Subject: [PATCH] Fix MTS sql syntax error and month error --- .../server/channel/handlers/MTSHandler.java | 44 ++++--------------- src/main/java/server/MTSItemInfo.java | 11 +++-- 2 files changed, 17 insertions(+), 38 deletions(-) diff --git a/src/main/java/net/server/channel/handlers/MTSHandler.java b/src/main/java/net/server/channel/handlers/MTSHandler.java index ca00cc842f..abffbe9ad1 100644 --- a/src/main/java/net/server/channel/handlers/MTSHandler.java +++ b/src/main/java/net/server/channel/handlers/MTSHandler.java @@ -45,6 +45,8 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Calendar; import java.util.List; @@ -122,40 +124,12 @@ public final class MTSHandler extends AbstractPacketHandler { return; } } - Calendar calendar = Calendar.getInstance(); - int year; - int month; - int day; - int oldmax = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); - int oldday = calendar.get(Calendar.DAY_OF_MONTH) + 7; - if (oldmax < oldday) { - if (calendar.get(Calendar.MONTH) + 2 > 12) { - year = calendar.get(Calendar.YEAR) + 1; - month = 1; - calendar.set(year, month, 1); - day = oldday - oldmax; - } else { - month = calendar.get(Calendar.MONTH) + 2; - year = calendar.get(Calendar.YEAR); - calendar.set(year, month, 1); - day = oldday - oldmax; - } - } else { - day = calendar.get(Calendar.DAY_OF_MONTH) + 7; - month = calendar.get(Calendar.MONTH); - year = calendar.get(Calendar.YEAR); - } - String date = year + "-"; - if (month < 10) { - date += "0" + month + "-"; - } else { - date += month + "-"; - } - if (day < 10) { - date += "0" + day; - } else { - date += day + ""; - } + + LocalDate now = LocalDate.now(); + LocalDate sellEnd = now.plusDays(7); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + String date = sellEnd.format(formatter); + if (!i.getInventoryType().equals(InventoryType.EQUIP)) { Item item = i; try (PreparedStatement pse = con.prepareStatement("INSERT INTO mts_items (tab, type, itemid, quantity, expiration, giftFrom, seller, price, owner, sellername, sell_ends) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")) { @@ -761,7 +735,7 @@ public final class MTSHandler extends AbstractPacketHandler { } } } - try (PreparedStatement ps = con.prepareStatement("SELECT COUNT(*) FROM mts_items WHERE tab = ? " + (type != 0 ? "AND type = ?" : "") + "AND transfer = 0")) { + try (PreparedStatement ps = con.prepareStatement("SELECT COUNT(*) FROM mts_items WHERE tab = ? " + (type != 0 ? "AND type = ?" : "") + " AND transfer = 0")) { ps.setInt(1, tab); if (type != 0) { ps.setInt(2, type); diff --git a/src/main/java/server/MTSItemInfo.java b/src/main/java/server/MTSItemInfo.java index 3779d69925..c091861167 100644 --- a/src/main/java/server/MTSItemInfo.java +++ b/src/main/java/server/MTSItemInfo.java @@ -23,6 +23,8 @@ package server; import client.inventory.Item; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.Calendar; /** @@ -38,13 +40,16 @@ public class MTSItemInfo { private int day = 1; public MTSItemInfo(Item item, int price, int id, int cid, String seller, String date) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + LocalDate sellEnd = LocalDate.parse(date, formatter); + this.item = item; this.price = price; this.seller = seller; this.id = id; - this.year = Integer.parseInt(date.substring(0, 4)); - this.month = Integer.parseInt(date.substring(5, 7)); - this.day = Integer.parseInt(date.substring(8, 10)); + this.year = sellEnd.getYear(); + this.month = sellEnd.getMonthValue(); + this.day = sellEnd.getDayOfMonth(); } public Item getItem() {