feat,refac: 경매장 재설계, 유니크 경매장 구현 (#221)

- 경매장을 모든 입찰 기록이 남는 새로운 경매장 로직으로 변경
  - ng_auction, ng_auction_bid
    - DTO 사용
  - 상회입찰 시 개인메시지로 알림
- 기존의 '배경에서 조용히 이루어지는' 유니크 입찰을 공개된 유니크 경매장으로 변경
  - 종료 기간 명시
    - 종료 기간에 가까워질때 입찰하면 자동 연장
    - 최대 연장기간 있음
  - 유니크 제한인 경우 24턴 연장
  - 중원정세에서 '보물수배'로 알림

Reviewed-on: https://storage.hided.net/gitea/devsam/core/pulls/221
This commit was merged in pull request #221.
This commit is contained in:
2022-06-09 01:21:55 +09:00
parent 7964aa5f6b
commit dd38344319
64 changed files with 3053 additions and 1530 deletions
+31
View File
@@ -0,0 +1,31 @@
<?php
namespace sammo\DTO;
use sammo\DTO\Attr\Convert;
use sammo\DTO\Attr\JsonString;
use sammo\DTO\Attr\NullIsUndefined;
use sammo\DTO\Attr\RawName;
use sammo\DTO\Converter\DateTimeConverter;
class AuctionBidItem extends DTO
{
public function __construct(
#[NullIsUndefined]
public ?int $no,
#[RawName('auction_id')]
public int $auctionID,
public ?int $owner,
#[RawName('general_id')]
public int $generalID,
public int $amount,
#[Convert(DateTimeConverter::class)]
public \DateTimeImmutable $date,
#[JsonString]
public AuctionBidItemData $aux,
) {
}
}
+17
View File
@@ -0,0 +1,17 @@
<?php
namespace sammo\DTO;
use sammo\DTO\Attr\NullIsUndefined;
class AuctionBidItemData extends DTO
{
public function __construct(
#[NullIsUndefined]
public ?string $ownerName,
public string $generalName,
#[NullIsUndefined]
public ?bool $tryExtendCloseDate,
) {
}
}
+37
View File
@@ -0,0 +1,37 @@
<?php
namespace sammo\DTO;
use sammo\DTO\Attr\Convert;
use sammo\DTO\Attr\JsonString;
use sammo\DTO\Attr\NullIsUndefined;
use sammo\DTO\Attr\RawName;
use sammo\DTO\Converter\DateTimeConverter;
use sammo\Enums\AuctionType;
use sammo\Enums\ResourceType;
class AuctionInfo extends DTO
{
public function __construct(
#[NullIsUndefined]
public ?int $id,
public AuctionType $type,
public bool $finished,
public ?string $target,
#[RawName('host_general_id')]
public int $hostGeneralID,
#[RawName('req_resource')]
public ResourceType $reqResource,
#[RawName('open_date')]
#[Convert(DateTimeConverter::class)]
public \DateTimeImmutable $openDate,
#[RawName('close_date')]
#[Convert(DateTimeConverter::class)]
public \DateTimeImmutable $closeDate,
#[JsonString]
public AuctionInfoDetail $detail,
) {
}
}
+28
View File
@@ -0,0 +1,28 @@
<?php
namespace sammo\DTO;
use sammo\DTO\Attr\Convert;
use sammo\DTO\Attr\NullIsUndefined;
use sammo\DTO\Converter\DateTimeConverter;
class AuctionInfoDetail extends DTO
{
public function __construct(
public string $title,
public string $hostName,
public int $amount,
#[NullIsUndefined]
public ?bool $isReverse,
public int $startBidAmount,
#[NullIsUndefined]
public ?int $finishBidAmount,
#[NullIsUndefined]
public ?int $remainCloseDateExtensionCnt,
#[NullIsUndefined]
#[Convert(DateTimeConverter::class)]
public ?\DateTimeImmutable $availableLatestBidCloseDate,
) {
}
}