增加 用户组价格计算
This commit is contained in:
parent
1424375a4b
commit
3872b5a9bb
@ -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();
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user