49 lines
1.4 KiB
PHP
49 lines
1.4 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
declare(strict_types=1);
|
||
|
|
|
||
|
|
namespace App\Platform;
|
||
|
|
|
||
|
|
use App\Entity\Parse\EntityParse;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 退款解析器抽象基类
|
||
|
|
*
|
||
|
|
* 继承 EntityParse 的通用能力,并实现 RefundContract 契约
|
||
|
|
* 提供退款解析的通用方法和辅助函数
|
||
|
|
*/
|
||
|
|
abstract class AbstractRefundParse extends EntityParse implements RefundContract
|
||
|
|
{
|
||
|
|
/**
|
||
|
|
* 获取退款状态 ID(抽象方法,由子类实现)
|
||
|
|
*/
|
||
|
|
abstract public function getRefundStatusId(string $platform_status): int;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 获取退款类型 ID(抽象方法,由子类实现)
|
||
|
|
*/
|
||
|
|
abstract public function getRefundTypeId(array $record): int;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 是否有父退款(抽象方法,由子类实现)
|
||
|
|
*/
|
||
|
|
abstract public function hasParentRefund(): bool;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 从原始数据格式化退款子项(抽象方法,由子类实现)
|
||
|
|
*/
|
||
|
|
abstract public function formatRefundItemsFromRaw(array $raw_data, ?array $platform_refund_id_to_local_refund_id_map): array;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 通用辅助方法:格式化货币金额
|
||
|
|
*
|
||
|
|
* @param float|int|string|null $amount 金额
|
||
|
|
* @param int $decimals 小数位数,默认 2 位
|
||
|
|
* @return float 格式化后的金额
|
||
|
|
*/
|
||
|
|
protected function formatAmount(float|int|string|null $amount, int $decimals = 2): float
|
||
|
|
{
|
||
|
|
return round((float)($amount ?? 0), $decimals);
|
||
|
|
}
|
||
|
|
}
|