ge: submit spent price instead of computed per-item price
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user