ge: submit spent price instead of computed per-item price

This commit is contained in:
Adam
2020-05-31 18:40:42 -04:00
parent ea45059f20
commit 83756e8722
6 changed files with 13 additions and 19 deletions

View File

@@ -35,7 +35,7 @@ public class GrandExchangeTrade
private int itemId; private int itemId;
private int quantity; private int quantity;
private int total; private int total;
private int price; private int spent;
private int offer; private int offer;
private WorldType worldType; private WorldType worldType;
} }

View File

@@ -79,7 +79,9 @@ public class GrandExchangeController
Integer userId = session == null ? null : session.getUser(); Integer userId = session == null ? null : session.getUser();
// We don't keep track of pending trades in the web UI, so only add cancelled or completed trades // We don't keep track of pending trades in the web UI, so only add cancelled or completed trades
if (userId != null && (grandExchangeTrade.isCancel() || grandExchangeTrade.getQuantity() == grandExchangeTrade.getTotal())) if (userId != null &&
grandExchangeTrade.getQuantity() > 0 &&
(grandExchangeTrade.isCancel() || grandExchangeTrade.getQuantity() == grandExchangeTrade.getTotal()))
{ {
grandExchangeService.add(userId, grandExchangeTrade); grandExchangeService.add(userId, grandExchangeTrade);
} }
@@ -90,7 +92,7 @@ public class GrandExchangeController
trade.setItemId(grandExchangeTrade.getItemId()); trade.setItemId(grandExchangeTrade.getItemId());
trade.setQuantity(grandExchangeTrade.getQuantity()); trade.setQuantity(grandExchangeTrade.getQuantity());
trade.setTotal(grandExchangeTrade.getTotal()); trade.setTotal(grandExchangeTrade.getTotal());
trade.setPrice(grandExchangeTrade.getPrice()); trade.setSpent(grandExchangeTrade.getSpent());
trade.setOffer(grandExchangeTrade.getOffer()); trade.setOffer(grandExchangeTrade.getOffer());
trade.setTime((int) (System.currentTimeMillis() / 1000L)); trade.setTime((int) (System.currentTimeMillis() / 1000L));
trade.setMachineId(request.getHeader(RuneLiteAPI.RUNELITE_MACHINEID)); trade.setMachineId(request.getHeader(RuneLiteAPI.RUNELITE_MACHINEID));

View File

@@ -80,7 +80,7 @@ public class GrandExchangeService
.addParameter("action", grandExchangeTrade.isBuy() ? "BUY" : "SELL") .addParameter("action", grandExchangeTrade.isBuy() ? "BUY" : "SELL")
.addParameter("item", grandExchangeTrade.getItemId()) .addParameter("item", grandExchangeTrade.getItemId())
.addParameter("quantity", grandExchangeTrade.getQuantity()) .addParameter("quantity", grandExchangeTrade.getQuantity())
.addParameter("price", grandExchangeTrade.getPrice()) .addParameter("price", grandExchangeTrade.getSpent() / grandExchangeTrade.getQuantity())
.executeUpdate(); .executeUpdate();
} }
} }

View File

@@ -35,7 +35,7 @@ class Trade
private int itemId; private int itemId;
private int quantity; private int quantity;
private int total; private int total;
private int price; private int spent;
private int offer; private int offer;
private int time; private int time;
private String machineId; private String machineId;

View File

@@ -404,7 +404,7 @@ public class GrandExchangePlugin extends Plugin
grandExchangeTrade.setItemId(offer.getItemId()); grandExchangeTrade.setItemId(offer.getItemId());
grandExchangeTrade.setQuantity(0); grandExchangeTrade.setQuantity(0);
grandExchangeTrade.setTotal(offer.getTotalQuantity()); grandExchangeTrade.setTotal(offer.getTotalQuantity());
grandExchangeTrade.setPrice(0); grandExchangeTrade.setSpent(0);
grandExchangeTrade.setOffer(offer.getPrice()); grandExchangeTrade.setOffer(offer.getPrice());
grandExchangeTrade.setWorldType(getGeWorldType()); grandExchangeTrade.setWorldType(getGeWorldType());
@@ -433,7 +433,7 @@ public class GrandExchangePlugin extends Plugin
grandExchangeTrade.setItemId(offer.getItemId()); grandExchangeTrade.setItemId(offer.getItemId());
grandExchangeTrade.setQuantity(offer.getQuantitySold()); grandExchangeTrade.setQuantity(offer.getQuantitySold());
grandExchangeTrade.setTotal(offer.getTotalQuantity()); grandExchangeTrade.setTotal(offer.getTotalQuantity());
grandExchangeTrade.setPrice(offer.getQuantitySold() > 0 ? offer.getSpent() / offer.getQuantitySold() : 0); grandExchangeTrade.setSpent(offer.getSpent());
grandExchangeTrade.setOffer(offer.getPrice()); grandExchangeTrade.setOffer(offer.getPrice());
grandExchangeTrade.setWorldType(getGeWorldType()); grandExchangeTrade.setWorldType(getGeWorldType());
@@ -443,16 +443,8 @@ public class GrandExchangePlugin extends Plugin
} }
final int qty = offer.getQuantitySold() - savedOffer.getQuantitySold(); final int qty = offer.getQuantitySold() - savedOffer.getQuantitySold();
if (qty <= 0)
{
return;
}
// offer.getPrice() is the price of the offer, not necessarily what the item bought at, so we compute it
// based on how much was spent & the qty
final int dspent = offer.getSpent() - savedOffer.getSpent(); final int dspent = offer.getSpent() - savedOffer.getSpent();
final int price = dspent / qty; if (qty <= 0 || dspent <= 0)
if (price <= 0)
{ {
return; return;
} }
@@ -462,7 +454,7 @@ public class GrandExchangePlugin extends Plugin
grandExchangeTrade.setItemId(offer.getItemId()); grandExchangeTrade.setItemId(offer.getItemId());
grandExchangeTrade.setQuantity(qty); grandExchangeTrade.setQuantity(qty);
grandExchangeTrade.setTotal(offer.getTotalQuantity()); grandExchangeTrade.setTotal(offer.getTotalQuantity());
grandExchangeTrade.setPrice(price); grandExchangeTrade.setSpent(dspent);
grandExchangeTrade.setOffer(offer.getPrice()); grandExchangeTrade.setOffer(offer.getPrice());
grandExchangeTrade.setWorldType(getGeWorldType()); grandExchangeTrade.setWorldType(getGeWorldType());

View File

@@ -159,7 +159,7 @@ public class GrandExchangePluginTest
assertEquals(ItemID.ABYSSAL_WHIP, trade.getItemId()); assertEquals(ItemID.ABYSSAL_WHIP, trade.getItemId());
assertEquals(2, trade.getQuantity()); assertEquals(2, trade.getQuantity());
assertEquals(10, trade.getTotal()); assertEquals(10, trade.getTotal());
assertEquals(10, trade.getPrice()); assertEquals(20, trade.getSpent());
} }
@Test @Test
@@ -216,6 +216,6 @@ public class GrandExchangePluginTest
assertEquals(ItemID.ABYSSAL_WHIP, trade.getItemId()); assertEquals(ItemID.ABYSSAL_WHIP, trade.getItemId());
assertEquals(1, trade.getQuantity()); assertEquals(1, trade.getQuantity());
assertEquals(10, trade.getTotal()); assertEquals(10, trade.getTotal());
assertEquals(25, trade.getPrice()); assertEquals(25, trade.getSpent());
} }
} }