feat,wip: 경매장 API 작성

This commit is contained in:
2022-06-09 01:21:21 +09:00
parent f607350442
commit 4b436b1499
13 changed files with 372 additions and 53 deletions
+27 -12
View File
@@ -4,13 +4,11 @@ namespace sammo\API\Auction;
use sammo\Session;
use DateTimeInterface;
use sammo\AuctionUniqueItem;
use sammo\AuctionBuyRice;
use sammo\Validator;
use sammo\GameConst;
use sammo\General;
use function sammo\buildItemClass;
class OpenUniqueAuction extends \sammo\BaseAPI
{
public function validateArgs(): ?string
@@ -27,12 +25,17 @@ class OpenUniqueAuction extends \sammo\BaseAPI
$v = new Validator($this->args);
$v->rule('required', [
'itemID',
'amount'
'amount',
'closeTurnCnt',
'startBidAmount',
'finishBidAmount',
])
->rule('int', 'amount')
->rule('min', 'amount', GameConst::$inheritItemUniqueMinPoint)
->rule('keyExists', 'itemID', $availableItems);
->rule('int', 'closeTurnCnt')
->rule('min', 'amount', 100)
->rule('max', 'amount', 10000)
->rule('int', 'startBidAmount')
->rule('int', 'finishBidAmount');
if (!$v->validate()) {
@@ -48,22 +51,34 @@ class OpenUniqueAuction extends \sammo\BaseAPI
public function launch(Session $session, ?DateTimeInterface $modifiedSince, ?string $reqEtag)
{
$itemID = $this->args['itemID'];
/** @var int */
$amount = $this->args['amount'];
/** @var int */
$closeTurnCnt = $this->args['closeTurnCnt'];
/** @var int */
$startBidAmount = $this->args['startBidAmount'];
/** @var int */
$finishBidAmount = $this->args['finishBidAmount'];
$generalID = $session->generalID;
$itemObj = buildItemClass($itemID);
$general = General::createGeneralObjFromDB($generalID);
$auctionResult = AuctionUniqueItem::openItemAuction($itemObj, $general, $amount);
$auctionResult = AuctionBuyRice::openResourceAuction(
$general,
$amount,
$closeTurnCnt,
$startBidAmount,
$finishBidAmount
);
if(is_string($auctionResult)) {
if (is_string($auctionResult)) {
return $auctionResult;
}
return [
'result' => true,
'auctionID' => $auctionResult->id,
'auctionID' => $auctionResult->getInfo()->id,
];
}
}