BalanceService.php 949 B

1234567891011121314151617181920212223242526272829303132
  1. <?php
  2. declare(strict_types=1);
  3. namespace app\miniapi\service;
  4. use app\miniapi\model\MiniEnterpriseBalance;
  5. final class BalanceService
  6. {
  7. public static function cents(int $enterprise): int
  8. {
  9. return (int) (MiniEnterpriseBalance::query()->where('enterprise_id', $enterprise)->value('balance_cents') ?? 0);
  10. }
  11. public static function locked(int $enterprise): MiniEnterpriseBalance
  12. {
  13. $balance = MiniEnterpriseBalance::query()->where('enterprise_id', $enterprise)->lockForUpdate()->first();
  14. if ($balance) {
  15. return $balance;
  16. }
  17. MiniEnterpriseBalance::query()->insert([
  18. 'enterprise_id' => $enterprise,
  19. 'balance_cents' => 0,
  20. 'created_at' => date('Y-m-d H:i:s'),
  21. 'updated_at' => date('Y-m-d H:i:s'),
  22. ]);
  23. return MiniEnterpriseBalance::query()->where('enterprise_id', $enterprise)->lockForUpdate()->firstOrFail();
  24. }
  25. }