| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- <?php
- namespace App\Module\Fund\Validators;
- use App\Module\Fund\Enums\FUND_TYPE;
- use App\Module\Fund\Services\FundService;
- use UCore\Validator;
- class CheckUserFundValidator extends Validator
- {
- /**
- * 验证用户余额是否充足
- *
- * @param mixed $value
- * @param array $data
- * @return bool
- */
- public function validate(mixed $value, array $data): bool
- {
- // 币种类型映射到账户种类
- // 1: 金币账户, 2: 钻石账户
- $map = [
- 1 => FUND_TYPE::FUND1->value, // 金币账户
- 2 => FUND_TYPE::FUND2->value, // 钻石账户
- ];
- // 检查币种类型是否支持
- if (!isset($map[$data['coinType']])) {
- $this->addError('coinType', '不支持的币种类型');
- return false;
- }
- $fundId = $map[$data['coinType']];
-
-
-
-
- $service = new FundService($data['userId'], $fundId);
- if ($service->balance() < $value ) {
- $this->addError('amount', '余额不足');
- return false;
- }
- return true;
- }
- }
|