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 quantity;
private int total;
private int price;
private int spent;
private int offer;
private WorldType worldType;
}

View File

@@ -79,7 +79,9 @@ public class GrandExchangeController
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
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);
}
@@ -90,7 +92,7 @@ public class GrandExchangeController
trade.setItemId(grandExchangeTrade.getItemId());
trade.setQuantity(grandExchangeTrade.getQuantity());
trade.setTotal(grandExchangeTrade.getTotal());
trade.setPrice(grandExchangeTrade.getPrice());
trade.setSpent(grandExchangeTrade.getSpent());
trade.setOffer(grandExchangeTrade.getOffer());
trade.setTime((int) (System.currentTimeMillis() / 1000L));
trade.setMachineId(request.getHeader(RuneLiteAPI.RUNELITE_MACHINEID));

View File

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

View File

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

View File

@@ -404,7 +404,7 @@ public class GrandExchangePlugin extends Plugin
grandExchangeTrade.setItemId(offer.getItemId());
grandExchangeTrade.setQuantity(0);
grandExchangeTrade.setTotal(offer.getTotalQuantity());
grandExchangeTrade.setPrice(0);
grandExchangeTrade.setSpent(0);
grandExchangeTrade.setOffer(offer.getPrice());
grandExchangeTrade.setWorldType(getGeWorldType());
@@ -433,7 +433,7 @@ public class GrandExchangePlugin extends Plugin
grandExchangeTrade.setItemId(offer.getItemId());
grandExchangeTrade.setQuantity(offer.getQuantitySold());
grandExchangeTrade.setTotal(offer.getTotalQuantity());
grandExchangeTrade.setPrice(offer.getQuantitySold() > 0 ? offer.getSpent() / offer.getQuantitySold() : 0);
grandExchangeTrade.setSpent(offer.getSpent());
grandExchangeTrade.setOffer(offer.getPrice());
grandExchangeTrade.setWorldType(getGeWorldType());
@@ -443,16 +443,8 @@ public class GrandExchangePlugin extends Plugin
}
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 price = dspent / qty;
if (price <= 0)
if (qty <= 0 || dspent <= 0)
{
return;
}
@@ -462,7 +454,7 @@ public class GrandExchangePlugin extends Plugin
grandExchangeTrade.setItemId(offer.getItemId());
grandExchangeTrade.setQuantity(qty);
grandExchangeTrade.setTotal(offer.getTotalQuantity());
grandExchangeTrade.setPrice(price);
grandExchangeTrade.setSpent(dspent);
grandExchangeTrade.setOffer(offer.getPrice());
grandExchangeTrade.setWorldType(getGeWorldType());

View File

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