修复了一些问题
This commit is contained in:
+28
-12
@@ -69,6 +69,8 @@ trait FrontSubmitPay {
|
||||
|
||||
$allow_free = !empty($settings['pay_free_s']);
|
||||
$vip_manual = !empty($settings['pay_vip_price_s']);
|
||||
$vip1_enabled = !array_key_exists('pay_vip_1_enabled', $settings) || !empty($settings['pay_vip_1_enabled']);
|
||||
$vip2_enabled = !array_key_exists('pay_vip_2_enabled', $settings) || !empty($settings['pay_vip_2_enabled']);
|
||||
$vip1_disc = (int) ($settings['pay_vip_1_discount'] ?? 100);
|
||||
$vip2_disc = (int) ($settings['pay_vip_2_discount'] ?? 100);
|
||||
|
||||
@@ -90,17 +92,27 @@ trait FrontSubmitPay {
|
||||
}
|
||||
|
||||
if ($vip_manual) {
|
||||
$vip1 = $this->parse_front_points($raw['vip1_points'] ?? $raw['vip_1_points'] ?? null);
|
||||
$vip2 = $this->parse_front_points($raw['vip2_points'] ?? $raw['vip_2_points'] ?? null);
|
||||
if ($vip1 === null || $vip2 === null) {
|
||||
$vip1 = $vip1_enabled
|
||||
? $this->parse_front_points($raw['vip1_points'] ?? $raw['vip_1_points'] ?? null)
|
||||
: 0;
|
||||
$vip2 = $vip2_enabled
|
||||
? $this->parse_front_points($raw['vip2_points'] ?? $raw['vip_2_points'] ?? null)
|
||||
: 0;
|
||||
if (($vip1_enabled && $vip1 === null) || ($vip2_enabled && $vip2 === null)) {
|
||||
return ['success' => false, 'message' => __('请设置正确的会员积分价格', 'aksrt')];
|
||||
}
|
||||
if ($vip1_enabled && $vip1 > $points) {
|
||||
return ['success' => false, 'message' => __('会员积分价格不能高于普通积分价格', 'aksrt')];
|
||||
}
|
||||
if ($vip2_enabled && $vip2 > ($vip1_enabled ? $vip1 : $points)) {
|
||||
return ['success' => false, 'message' => __('更高等级会员积分价格不能高于较低等级会员积分价格', 'aksrt')];
|
||||
}
|
||||
} else {
|
||||
$vip1 = (intdiv($points, 100) * $vip1_disc) + intdiv(($points % 100) * $vip1_disc, 100);
|
||||
$vip2 = (intdiv($points, 100) * $vip2_disc) + intdiv(($points % 100) * $vip2_disc, 100);
|
||||
}
|
||||
$vip1 = max(0, min($points, $vip1));
|
||||
$vip2 = max(0, min($vip1, $vip2));
|
||||
$vip1 = max(0, min($points, (int) $vip1));
|
||||
$vip2 = max(0, min($vip1_enabled ? $vip1 : $points, (int) $vip2));
|
||||
|
||||
$meta['points_price'] = $points;
|
||||
$meta['price'] = '0.00';
|
||||
@@ -126,23 +138,27 @@ trait FrontSubmitPay {
|
||||
}
|
||||
|
||||
if ($vip_manual) {
|
||||
$vip1_minor = $this->parse_front_cash_minor($raw['vip1_price'] ?? $raw['vip_1_price'] ?? null);
|
||||
$vip2_minor = $this->parse_front_cash_minor($raw['vip2_price'] ?? $raw['vip_2_price'] ?? null);
|
||||
if ($vip1_minor === null || $vip2_minor === null) {
|
||||
$vip1_minor = $vip1_enabled
|
||||
? $this->parse_front_cash_minor($raw['vip1_price'] ?? $raw['vip_1_price'] ?? null)
|
||||
: 0;
|
||||
$vip2_minor = $vip2_enabled
|
||||
? $this->parse_front_cash_minor($raw['vip2_price'] ?? $raw['vip_2_price'] ?? null)
|
||||
: 0;
|
||||
if (($vip1_enabled && $vip1_minor === null) || ($vip2_enabled && $vip2_minor === null)) {
|
||||
return ['success' => false, 'message' => __('请设置正确的会员价格', 'aksrt')];
|
||||
}
|
||||
if ($vip1_minor > $price_minor) {
|
||||
if ($vip1_enabled && $vip1_minor > $price_minor) {
|
||||
return ['success' => false, 'message' => __('会员价不能高于普通价', 'aksrt')];
|
||||
}
|
||||
if ($vip2_minor > $vip1_minor) {
|
||||
if ($vip2_enabled && $vip2_minor > ($vip1_enabled ? $vip1_minor : $price_minor)) {
|
||||
return ['success' => false, 'message' => __('更高等级会员价不能高于较低等级会员价', 'aksrt')];
|
||||
}
|
||||
} else {
|
||||
$vip1_minor = \AKSRT\Ledger\AssetAmount::percentage($price_minor, max(0, min(100, $vip1_disc)));
|
||||
$vip2_minor = \AKSRT\Ledger\AssetAmount::percentage($price_minor, max(0, min(100, $vip2_disc)));
|
||||
}
|
||||
$vip1_minor = max(0, min($price_minor, $vip1_minor));
|
||||
$vip2_minor = max(0, min($vip1_minor, $vip2_minor));
|
||||
$vip1_minor = max(0, min($price_minor, (int) $vip1_minor));
|
||||
$vip2_minor = max(0, min($vip1_enabled ? $vip1_minor : $price_minor, (int) $vip2_minor));
|
||||
|
||||
$meta['price'] = \AKSRT\Ledger\AssetAmount::decimal_from_minor($price_minor);
|
||||
$meta['points_price'] = 0;
|
||||
|
||||
Reference in New Issue
Block a user