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:
@@ -98,10 +98,10 @@ class APIHelper
|
||||
}
|
||||
Json::die($result, $setCache ? 0 : Json::NO_CACHE);
|
||||
} catch (\Exception $e) {
|
||||
Json::dieWithReason($e->getMessage());
|
||||
Json::dieWithReason($e->getMessage()."\n".$e->getTraceAsString());
|
||||
} catch (\Throwable $e) {
|
||||
logExceptionByCustomHandler($e, false);
|
||||
Json::dieWithReason($e->getMessage());
|
||||
Json::dieWithReason($e->getMessage()."\n".$e->getTraceAsString());
|
||||
} catch (mixed $e) {
|
||||
Json::dieWithReason(strval($e));
|
||||
}
|
||||
|
||||
@@ -78,11 +78,18 @@ class DefaultConverter implements Converter
|
||||
return $raw;
|
||||
}
|
||||
|
||||
if($type === 'bool' && is_bool($raw)){
|
||||
$success = true;
|
||||
return $raw;
|
||||
if($type === 'bool'){
|
||||
if(is_bool($raw)){
|
||||
$success = true;
|
||||
return $raw;
|
||||
}
|
||||
if($raw === 0 || $raw === 1){
|
||||
$success = true;
|
||||
return $raw !== 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -100,7 +107,7 @@ class DefaultConverter implements Converter
|
||||
}
|
||||
}
|
||||
|
||||
throw new \Exception('DefaultConverter can not convert');
|
||||
throw new \Exception('DefaultConverter can not convert '.gettype($raw));
|
||||
}
|
||||
|
||||
public function convertTo(mixed $data): string|array|int|float|bool|null
|
||||
|
||||
+9
-15
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace sammo\DTO;
|
||||
|
||||
use Ds\Set;
|
||||
use sammo\DTO\Attr\Convert;
|
||||
use sammo\DTO\Converter\DefaultConverter;
|
||||
|
||||
@@ -110,10 +111,13 @@ abstract class DTO
|
||||
return $object;
|
||||
}
|
||||
|
||||
public function toArray(): array
|
||||
public function toArray(string ...$exceptKeys): array
|
||||
{
|
||||
$reflection = new \ReflectionClass($this::class);
|
||||
$result = [];
|
||||
|
||||
$exceptKeySet = new Set($exceptKeys);
|
||||
|
||||
foreach ($reflection->getProperties(\ReflectionProperty::IS_PUBLIC) as $property) {
|
||||
$value = $property->getValue($this);
|
||||
$attrs = Util\DTOUtil::getAttrs($property);
|
||||
@@ -123,6 +127,10 @@ abstract class DTO
|
||||
continue;
|
||||
}
|
||||
|
||||
if($exceptKeySet->contains($name)){
|
||||
continue;
|
||||
}
|
||||
|
||||
if (key_exists(Attr\RawName::class, $attrs)) {
|
||||
$rawAttr = $attrs[Attr\RawName::class];
|
||||
$attr = new Attr\RawName(...$rawAttr->getArguments());
|
||||
@@ -153,18 +161,4 @@ abstract class DTO
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function toArrayExcept(string ...$keys): array{
|
||||
$reflection = new \ReflectionClass($this::class);
|
||||
$values = $this->toArray();
|
||||
foreach($keys as $key){
|
||||
if(!$reflection->hasProperty($key)){
|
||||
throw new \Exception("Key {$key} does not exist");
|
||||
}
|
||||
if(key_exists($key, $values)){
|
||||
unset($values[$key]);
|
||||
}
|
||||
}
|
||||
return $values;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user