积分与余额账务系统硬切重构
This commit is contained in:
@@ -67,13 +67,13 @@ if (!function_exists('aksrt_get_resource_meta')) {
|
||||
return [
|
||||
'version' => (string) ($pay_meta['version'] ?? ''),
|
||||
'size' => (string) ($pay_meta['size'] ?? ''),
|
||||
'price' => (float) ($pay_meta['price'] ?? 0),
|
||||
'price' => (string) ($pay_meta['price'] ?? '0.00'),
|
||||
'points_price' => (int) ($pay_meta['points_price'] ?? 0),
|
||||
'pay_modo' => (($pay_meta['pay_modo'] ?? '0') === 'points') ? 'points' : '0',
|
||||
'pay_limit' => in_array((int) ($pay_meta['pay_limit'] ?? 0), [0, 1, 2], true) ? (int) $pay_meta['pay_limit'] : 0,
|
||||
'original_price' => (float) ($pay_meta['original_price'] ?? 0),
|
||||
'vip1_price' => (float) ($pay_meta['vip1_price'] ?? 0),
|
||||
'vip2_price' => (float) ($pay_meta['vip2_price'] ?? 0),
|
||||
'original_price' => (string) ($pay_meta['original_price'] ?? '0.00'),
|
||||
'vip1_price' => (string) ($pay_meta['vip1_price'] ?? '0.00'),
|
||||
'vip2_price' => (string) ($pay_meta['vip2_price'] ?? '0.00'),
|
||||
'vip1_points' => (int) ($pay_meta['vip1_points'] ?? 0),
|
||||
'vip2_points' => (int) ($pay_meta['vip2_points'] ?? 0),
|
||||
'pay_type' => (string) ($pay_meta['pay_type'] ?? \AKSRT\Core\DomainModel::PAY_TYPE_DOWNLOAD),
|
||||
@@ -99,13 +99,13 @@ if (!function_exists('aksrt_default_resource_meta')) {
|
||||
return [
|
||||
'version' => (string) ($meta['version'] ?? ''),
|
||||
'size' => (string) ($meta['size'] ?? ''),
|
||||
'price' => (float) ($meta['price'] ?? 0),
|
||||
'price' => (string) ($meta['price'] ?? '0.00'),
|
||||
'points_price' => (int) ($meta['points_price'] ?? 0),
|
||||
'pay_modo' => (($meta['pay_modo'] ?? '0') === 'points') ? 'points' : '0',
|
||||
'pay_limit' => in_array((int) ($meta['pay_limit'] ?? 0), [0, 1, 2], true) ? (int) $meta['pay_limit'] : 0,
|
||||
'original_price' => (float) ($meta['original_price'] ?? 0),
|
||||
'vip1_price' => (float) ($meta['vip1_price'] ?? 0),
|
||||
'vip2_price' => (float) ($meta['vip2_price'] ?? 0),
|
||||
'original_price' => (string) ($meta['original_price'] ?? '0.00'),
|
||||
'vip1_price' => (string) ($meta['vip1_price'] ?? '0.00'),
|
||||
'vip2_price' => (string) ($meta['vip2_price'] ?? '0.00'),
|
||||
'vip1_points' => (int) ($meta['vip1_points'] ?? 0),
|
||||
'vip2_points' => (int) ($meta['vip2_points'] ?? 0),
|
||||
'pay_type' => \AKSRT\Core\DomainModel::PAY_TYPE_DOWNLOAD,
|
||||
@@ -128,19 +128,18 @@ if (!function_exists('aksrt_resource_price_label')) {
|
||||
/**
|
||||
* 把价格数字渲染成展示徽章文案。
|
||||
*
|
||||
* @param float $price
|
||||
* @param int $price
|
||||
* @return array { text:string, free:bool }
|
||||
*/
|
||||
function aksrt_resource_price_label(float $price): array {
|
||||
function aksrt_resource_price_label(int $price): array {
|
||||
if ($price <= 0) {
|
||||
return [
|
||||
'text' => __('免费', 'aksrt'),
|
||||
'free' => true,
|
||||
];
|
||||
}
|
||||
$n = (fmod($price, 1.0) === 0.0) ? (string) (int) $price : rtrim(rtrim(number_format($price, 2, '.', ''), '0'), '.');
|
||||
return [
|
||||
'text' => sprintf(__('%s 积分', 'aksrt'), $n),
|
||||
'text' => sprintf(__('%s 积分', 'aksrt'), (string) $price),
|
||||
'free' => false,
|
||||
];
|
||||
}
|
||||
@@ -150,15 +149,11 @@ if (!function_exists('aksrt_resource_price_amount')) {
|
||||
/**
|
||||
* Format the raw resource price number for compact UI labels.
|
||||
*
|
||||
* @param float $price
|
||||
* @param int $price
|
||||
* @return string
|
||||
*/
|
||||
function aksrt_resource_price_amount(float $price): string {
|
||||
if (fmod($price, 1.0) === 0.0) {
|
||||
return (string) (int) $price;
|
||||
}
|
||||
|
||||
return rtrim(rtrim(number_format($price, 2, '.', ''), '0'), '.');
|
||||
function aksrt_resource_price_amount(int $price): string {
|
||||
return (string) max(0, $price);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,14 +196,15 @@ if (!function_exists('aksrt_resource_card_badge_text')) {
|
||||
$priced = function_exists('aksrt_get_user_pay_price')
|
||||
? aksrt_get_user_pay_price($p)
|
||||
: [
|
||||
'amount' => $pay_modo === 'points' ? (float) ($meta['points_price'] ?? 0) : (float) ($meta['price'] ?? 0),
|
||||
'amount' => $pay_modo === 'points' ? (int) ($meta['points_price'] ?? 0) : (string) ($meta['price'] ?? '0.00'),
|
||||
'modo' => $pay_modo,
|
||||
];
|
||||
$price = (float) ($priced['amount'] ?? 0);
|
||||
$price = $priced['amount'] ?? ($pay_modo === 'points' ? 0 : '0.00');
|
||||
$pay_modo = (($priced['modo'] ?? $pay_modo) === 'points') ? 'points' : '0';
|
||||
$price_minor = function_exists('aksrt_asset_price_minor') ? aksrt_asset_price_minor($price, $pay_modo) : 0;
|
||||
|
||||
// Free paid-type (price 0).
|
||||
if ($price <= 0) {
|
||||
if ($price_minor <= 0) {
|
||||
if ($pay_type === 'download') {
|
||||
return __('免费资源', 'aksrt');
|
||||
}
|
||||
@@ -218,7 +214,7 @@ if (!function_exists('aksrt_resource_card_badge_text')) {
|
||||
if ($pay_modo === 'points') {
|
||||
$currency = class_exists('\AKSRT\Settings\Settings') ? \AKSRT\Settings\Settings::get_currency_name() : __('积分', 'aksrt');
|
||||
$amount = function_exists('aksrt_resource_price_amount')
|
||||
? aksrt_resource_price_amount($price)
|
||||
? aksrt_resource_price_amount($price_minor)
|
||||
: (string) (int) $price;
|
||||
return sprintf('%s %s%s', $type_name, $amount, $currency);
|
||||
}
|
||||
@@ -461,13 +457,11 @@ if (!function_exists('aksrt_resource_download_cost')) {
|
||||
}
|
||||
|
||||
if (is_array($priced)) {
|
||||
$price = (float) ($priced['amount'] ?? 0);
|
||||
return $price > 0 ? (int) ceil($price) : 0;
|
||||
return is_int($priced['amount'] ?? null) ? max(0, (int) $priced['amount']) : 0;
|
||||
}
|
||||
|
||||
$meta = function_exists('aksrt_get_pay_meta') ? aksrt_get_pay_meta($post) : [];
|
||||
$price = (float) ($meta['points_price'] ?? $meta['price'] ?? 0);
|
||||
return $price > 0 ? (int) ceil($price) : 0;
|
||||
return max(0, (int) ($meta['points_price'] ?? 0));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user