海南旅游SAAS
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.3 KiB

4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
  1. <?php
  2. namespace App\Listeners;
  3. use App\Events\DepositUpdate;
  4. use App\Models\DepositLog;
  5. use App\Traits\StatementTraits;
  6. use Illuminate\Support\Facades\Log;
  7. class SupplierEventSubscriber
  8. {
  9. public function onSupplierUpdated($event)
  10. {
  11. //处理流水事务
  12. $supplier = $event->supplier;
  13. //如果交易金有变动
  14. if ($supplier->isDirty('deposit_normal')) {
  15. DepositLog::query()->create([
  16. 'price' => bcsub($supplier->deposit_normal,$supplier->getOriginal('deposit_normal')),
  17. 'type' => StatementTraits::$deposit[0],
  18. 'supplier_id' => $supplier->id
  19. ]);
  20. }
  21. if ($supplier->isDirty('deposit_frozen')) {
  22. DepositLog::query()->create([
  23. 'price' => bcsub($supplier->deposit_frozen,$supplier->getOriginal('deposit_frozen')),
  24. 'type' => StatementTraits::$deposit[1],
  25. 'supplier_id' => $supplier->id
  26. ]);
  27. }
  28. if ($supplier->isDirty('deposit_used')) {
  29. DepositLog::query()->create([
  30. 'price' => bcsub($supplier->deposit_used,$supplier->getOriginal('deposit_used')),
  31. 'type' => StatementTraits::$deposit[2],
  32. 'supplier_id' => $supplier->id
  33. ]);
  34. }
  35. }
  36. /**
  37. * 为订阅者注册监听器
  38. *
  39. * @param Illuminate\Events\Dispatcher $events
  40. */
  41. public function subscribe($events)
  42. {
  43. $events->listen(
  44. DepositUpdate::class,
  45. SupplierEventSubscriber::class . '@onSupplierUpdated'
  46. );
  47. }
  48. }