增加 用户组价格计算

This commit is contained in:
iVampireSP.com 2023-02-13 02:22:26 +08:00
parent 1424375a4b
commit 3872b5a9bb
No known key found for this signature in database
GPG Key ID: 2F7B001CA27A8132
2 changed files with 19 additions and 19 deletions

View File

@ -2,6 +2,7 @@
namespace App\Models; namespace App\Models;
use App\Events\Users;
use App\Exceptions\User\BalanceNotEnoughException; use App\Exceptions\User\BalanceNotEnoughException;
use GeneaLabs\LaravelModelCaching\CachedBuilder; use GeneaLabs\LaravelModelCaching\CachedBuilder;
use GeneaLabs\LaravelModelCaching\Traits\Cachable; use GeneaLabs\LaravelModelCaching\Traits\Cachable;
@ -87,11 +88,11 @@ public function getBirthdayFromIdCard(string|null $id_card = null): Carbon
} }
$bir = substr($id_card, 6, 8); $bir = substr($id_card, 6, 8);
$year = (int)substr($bir, 0, 4); $year = (int) substr($bir, 0, 4);
$month = (int)substr($bir, 4, 2); $month = (int) substr($bir, 4, 2);
$day = (int)substr($bir, 6, 2); $day = (int) substr($bir, 6, 2);
return Carbon::parse($year . '-' . $month . '-' . $day); return Carbon::parse($year.'-'.$month.'-'.$day);
} }
public function hasBalance(string $amount = '0.01'): bool public function hasBalance(string $amount = '0.01'): bool
@ -166,22 +167,20 @@ public function getCostPrice(string $price): string
{ {
$this->load('user_group'); $this->load('user_group');
if (!$this->user_group) { if (! $this->user_group) {
return $price; return $price;
} }
return $this->user_group->getCostPrice($price); return $this->user_group->getCostPrice($price);
} }
/** /**
* 扣除费用 * 扣除费用
* *
* @param string|null $amount * @param string|null $amount
* @param string $description * @param string $description
* @param bool $fail * @param bool $fail
* @param array $options * @param array $options
*
* @return string * @return string
*/ */
public function reduce(string|null $amount = '0', string $description = '消费', bool $fail = false, array $options = []): string public function reduce(string|null $amount = '0', string $description = '消费', bool $fail = false, array $options = []): string
@ -190,7 +189,7 @@ public function reduce(string|null $amount = '0', string $description = '消费'
return $this->balance; return $this->balance;
} }
Cache::lock('user_balance_' . $this->id, 10)->block(10, function () use ($amount, $fail, $description, $options) { Cache::lock('user_balance_'.$this->id, 10)->block(10, function () use ($amount, $fail, $description, $options) {
$this->refresh(); $this->refresh();
if ($this->balance < $amount) { if ($this->balance < $amount) {
@ -215,6 +214,8 @@ public function reduce(string|null $amount = '0', string $description = '消费'
} }
(new Transaction)->create($data); (new Transaction)->create($data);
broadcast(new Users($this, 'balances.amount.reduced', $this));
}); });
return $this->balance; return $this->balance;
@ -223,11 +224,10 @@ public function reduce(string|null $amount = '0', string $description = '消费'
/** /**
* 增加余额 * 增加余额
* *
* @param string|null $amount * @param string|null $amount
* @param string $payment * @param string $payment
* @param string $description * @param string $description
* @param array $options * @param array $options
*
* @return string * @return string
*/ */
public function charge(string|null $amount = '0', string $payment = 'console', string $description = '充值', array $options = []): string public function charge(string|null $amount = '0', string $payment = 'console', string $description = '充值', array $options = []): string
@ -236,7 +236,7 @@ public function charge(string|null $amount = '0', string $payment = 'console', s
return $this->balance; return $this->balance;
} }
Cache::lock('user_balance_' . $this->id, 10)->block(10, function () use ($amount, $description, $payment, $options) { Cache::lock('user_balance_'.$this->id, 10)->block(10, function () use ($amount, $description, $payment, $options) {
$this->refresh(); $this->refresh();
$this->balance = bcadd($this->balance, $amount, 4); $this->balance = bcadd($this->balance, $amount, 4);
$this->save(); $this->save();

View File

@ -65,7 +65,7 @@ public function getCostPrice(string $price): string
{ {
if ($this->exempt) { if ($this->exempt) {
return '0'; return '0';
} else if ($this->discount !== 100 && $this->discount !== null) { } elseif ($this->discount !== 100 && $this->discount !== null) {
$price = bcmul($price, bcdiv($this->discount, '100', 4), 4); $price = bcmul($price, bcdiv($this->discount, '100', 4), 4);
} }